Submission #358605

#TimeUsernameProblemLanguageResultExecution timeMemory
358605sumit_kk10Global Warming (CEOI18_glo)C++14
10 / 100
65 ms4072 KiB
#include <bits/stdc++.h> #define fast ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL) #define ll long long int #define ld long double using namespace std; const int N = 1e6 + 5; const int MOD = 1e9 + 7; int main(){ fast; int n, x; cin >> n >> x; int a[n]; for(int i = 0; i < n; ++i) cin >> a[i]; vector<pair<int, int> > lis; lis.push_back({a[0], 0}); for(int i = 1; i < n; ++i){ if(a[i] > lis.back().first){ lis.push_back({a[i], i}); continue; } int low = 0, high = lis.size() - 1, ans = -1; while(low <= high){ int mid = (low + high) / 2; if(lis[mid].first >= a[i]){ ans = mid; high = mid - 1; } else low = mid + 1; } if(ans == -1) continue; lis[ans] = {a[i], i}; } int mx = lis.size(); for(auto k : lis) a[k.second] += x; vector<int> lis1; lis1.push_back(a[0]); for(int i = 1; i < n; ++i){ if(a[i] > lis1.back()){ lis1.push_back(a[i]); continue; } int low = 0, high = lis1.size() - 1, ans = -1; while(low <= high){ int mid = (low + high) / 2; if(lis1[mid] >= a[i]){ ans = mid; high = mid - 1; } else low = mid + 1; } if(ans == -1) continue; lis1[ans] = a[i]; } mx = max(mx, (int) lis1.size()); for(auto k : lis) a[k.second] -= 2*x; lis1.clear(); lis1.push_back(a[0]); for(int i = 1; i < n; ++i){ if(a[i] > lis1.back()){ lis1.push_back(a[i]); continue; } int low = 0, high = lis1.size() - 1, ans = -1; while(low <= high){ int mid = (low + high) / 2; if(lis1[mid] >= a[i]){ ans = mid; high = mid - 1; } else low = mid + 1; } if(ans == -1) continue; lis1[ans] = a[i]; } cout << max(mx, (int) lis1.size()) << '\n'; return 0; }
#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...