Submission #867041

#TimeUsernameProblemLanguageResultExecution timeMemory
867041boris_7Global Warming (CEOI18_glo)C++17
100 / 100
48 ms5524 KiB
#include<bits/stdc++.h>

using namespace std;
using ll = long long;

void solve(){
    int n,k;
    cin>>n>>k;
    vector<int>v(n);
    for(int i = 0;i<n;i++){
        cin>>v[i];
    }
    vector<int>dp(n+1,1e9);
    vector<int>pref(n);
    int ans = 0;
    for(int i = 0;i<n;i++){
        auto it = lower_bound(dp.begin(),dp.end(),v[i])-dp.begin();
        dp[it]=v[i];
        pref[i]=it+1;
        ans = max(ans,pref[i]);
    }
    dp = vector<int>(n+1,1e9);
    for(int i = n-1;i>=0;i--){
		auto it = lower_bound(dp.begin(), dp.end(), -v[i] + k) - dp.begin();
        ans = max(ans,int(it+pref[i]));
        it = lower_bound(dp.begin(),dp.end(),-v[i])-dp.begin();
        dp[it]=-v[i];
    }
    cout<<ans<<endl;
}

signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(nullptr);
    // int t;cin>>t;while(t--)
        solve();
}
#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...