Submission #1234280

#TimeUsernameProblemLanguageResultExecution timeMemory
1234280yixuan19Global Warming (CEOI18_glo)C++20
15 / 100
13 ms2748 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; const long long decalage = (1<<25); int tab[2*decalage]; void modify(int ind, int new_val){ tab[ind] = new_val; while (ind > 1){ ind/=2; tab[ind] = max(tab[ind*2], tab[ind*2+1]); } } int query(int l, int r){ if (l == r) return tab[l]; if (l%2 == 1){ return max(tab[l], query(l+1,r)); } if (r%2 == 0){ return max(tab[r], query(l,r-1)); } return query(l/2,r/2); } int tab2[2*decalage]; void modify2(int ind, int new_val){ tab2[ind] = new_val; while (ind > 1){ ind/=2; tab2[ind] = max(tab2[ind*2], tab2[ind*2+1]); } } int query2(int l, int r){ if (l == r) return tab2[l]; if (l%2 == 1){ return max(tab2[l], query2(l+1,r)); } if (r%2 == 0){ return max(tab2[r], query2(l,r-1)); } return query2(l/2,r/2); } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, max_change, temp; cin >> N >> max_change; vector<int> temps; for (int i = 0; i < N; ++i){ cin >> temp; temps.push_back(temp); } int dp[N+1][2]; for (int i = 0; i < N; ++i){ for (int j = 0; j < 2; ++j){ dp[i][j] = 0; } } dp[0][0] = 1; dp[0][1] = 1; modify(temps[0]+decalage, 1); modify2(temps[0]+decalage, 1); for (int i = 1; i < N; ++i){ dp[i][0] = query(decalage,temps[i] + decalage -1) + 1; dp[i][1] = query(decalage,temps[i] + decalage -1 + max_change) + 1; //cout<<"query 0 "<<i<<" "<<query(decalage,temps[i] + decalage -1)<<endl; //cout<<"query 1 "<<i<<" "<<query(decalage,temps[i] + decalage -1 + max_change)<<endl; //cout<<"query 2 "<<i<<" "<<query2(decalage,temps[i] + decalage -1)<<endl; //cout<<max(dp[i][1],query2(decalage,temps[i] + decalage -1))<<endl; dp[i][1] = max(dp[i][1],query2(decalage,temps[i] + decalage -1)+1); modify(temps[i]+decalage, dp[i][0]); modify2(temps[i]+decalage, dp[i][1]); } int maxi = 0; for (int i = 0; i < N; ++i ){ for (int j = 0; j < 2; ++j){ //cout<<dp[i][j]<<" "; maxi = max(maxi, dp[i][j]); } //cout<<endl; } cout<<maxi<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...