제출 #1306052

#제출 시각아이디문제언어결과실행 시간메모리
1306052NipphitchGlobal Warming (CEOI18_glo)C++20
17 / 100
33 ms5056 KiB
#include <bits/stdc++.h>
using namespace std;
#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()};
        //for(int x:lds) cout << x << " ";
        //cout << "\n";
    }
    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...