제출 #1306053

#제출 시각아이디문제언어결과실행 시간메모리
1306053NipphitchGlobal Warming (CEOI18_glo)C++20
62 / 100
38 ms9804 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pii pair <int,int> const int N=2e5+5; int n,m,a[N],ans; pii dpl[N],dpr[N]; vector <int> lis,lds; signed main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for(int i=1;i<=n;i++) cin >> a[i]; for(int i=1;i<=n;i++){ int idx=lower_bound(lis.begin(),lis.end(),a[i])-lis.begin(); if(idx==lis.size()) lis.push_back(a[i]); else lis[idx]=a[i]; dpl[i]={lis.size(),lis.back()}; } for(int i=n;i>=1;i--){ int idx=lower_bound(lds.begin(),lds.end(),a[i],greater <int>())-lds.begin(); if(idx==lds.size()) lds.push_back(a[i]); else lds[idx]=a[i]; dpr[i]={lds.size(),lds.back()}; } ans=max(dpl[n].first,dpr[1].first); for(int i=1;i<n;i++){ if(abs(dpl[i].second-dpr[i+1].second)<m){ ans=max(ans,dpl[i].first+dpr[i+1].first); } } cout << ans; }
#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...