제출 #1277169

#제출 시각아이디문제언어결과실행 시간메모리
1277169zhaoxwGlobal Warming (CEOI18_glo)C++20
100 / 100
84 ms3184 KiB
#include<bits/stdc++.h>
using namespace std;
const int MAX_N = 200005;
int a[MAX_N],p[MAX_N],n,x,ans;
vector<int> dp,b;
int main()
{
    cin >> n >> x;
    for(int i = 1;i <= n;i++) cin >> a[i];
    for(int i = n;i >= 1;i--)
    {
        auto it = lower_bound(dp.begin(),dp.end(),a[i],greater<int>());
        int cnt = it-dp.begin();
        if(cnt == dp.size()) dp.push_back(a[i]);
        else dp[cnt] = a[i];
        p[i] = cnt+1;
    }
    for(int i = 1;i <= n;i++)
    {
        int pos = lower_bound(b.begin(),b.end(),a[i]+x)-b.begin()-1;
        if(!b.empty())
            ans = max(ans,p[i]+pos+1);
        auto it = lower_bound(b.begin(),b.end(),a[i]);
        int cnt = it-b.begin();
        if(cnt == b.size()) b.push_back(a[i]);
        else b[cnt] = a[i];
    }
    cout << ans << '\n';
    //for(int i = 1;i <= n;i++)
    //    cout << p[i] << ' ';
    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...