Submission #444519

#TimeUsernameProblemLanguageResultExecution timeMemory
444519fuad27Global Warming (CEOI18_glo)C++14
25 / 100
2096 ms3624 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int CeilIndex(vector<int>& v, int l, int r, int key) { while (r - l > 1) { int m = l + (r - l) / 2; if (v[m] >= key) r = m; else l = m; } return r; } int lis(vector<int>& v) { if (v.size() == 0) return 0; vector<int> tail(v.size(), 0); int length = 1; tail[0] = v[0]; for (size_t i = 1; i < v.size(); i++) { if (v[i] < tail[0]) tail[0] = v[i]; else if (v[i] > tail[length - 1]) tail[length++] = v[i]; else tail[CeilIndex(tail, -1, length - 1, v[i])] = v[i]; } return length; } int32_t main() { int n, x; cin >> n >> x; vector<int> v; for(int i = 0;i<n;i++) { int p; cin >> p; v.push_back(p); } int MAX = lis(v); if(x!=0) { for(int i = 0;i<n;i++) { for(int j = i;j<n;j++) { for(int d = -x;d<=x;d++) { for(int k = i;k<j;k++) { v[k] += d; } MAX = max(MAX, lis(v)); for(int k = i;k<j;k++)v[k]-=d; } } } } cout<<MAX<<endl; 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...