제출 #1167126

#제출 시각아이디문제언어결과실행 시간메모리
1167126CiprianGlobal Warming (CEOI18_glo)C++20
10 / 100
23 ms4700 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int n, x; int mx(vector<int>a, int l, int r){ vector<int>dp; for(int i=1; i<=n; i++){ if(i>=l && i<=r){ int pos=lower_bound(dp.begin(),dp.end(), a[i]+x)-dp.begin(); if(pos==dp.size()){ dp.push_back(a[i]+x); }else{ dp[pos]=a[i]+x; } }else{ int pos=lower_bound(dp.begin(),dp.end(), a[i])-dp.begin(); if(pos==dp.size()){ dp.push_back(a[i]); }else{ dp[pos]=a[i]; } } }return dp.size(); } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>n>>x; vector<int> a(n+1); int mx2=0, mn=1e9; for(int i=1; i<=n; i++){ cin>>a[i]; mn=min(mn, a[i]); mx2=max(mx2, a[i]); }int mx1=0; x=min(x, mx2); if(x==0){ mx1= max(mx1, mx(a, 0, 0)); } else{ mx1= max(mx1, mx(a, 0, 0)); //vector<int>q; /*for(int i=1; i<=n; i++){ //if(a[i]==mn)q.push_back(i); mx1= max(mx1, mx(a, i, n)); }*///for(auto e: q)mx1= max(mx1, mx(a, e, n)); mx1= max(mx1, mx(a, n/2, n)); mx1= max(mx1, mx(a, n/4, n)); mx1= max(mx1, mx(a, 3*n/4, n)); }cout<<mx1<<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...