Submission #1277167

#TimeUsernameProblemLanguageResultExecution timeMemory
1277167zhaoxwGlobal Warming (CEOI18_glo)C++20
0 / 100
94 ms1976 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;
        ans = max(p[i],p[i]+pos);
        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...