Submission #1167097

#TimeUsernameProblemLanguageResultExecution timeMemory
1167097CiprianGlobal Warming (CEOI18_glo)C++20
28 / 100
2095 ms3472 KiB

#include <bits/stdc++.h>
using namespace std;
#define int long long 
int n, x;
int mx(vector<int>a, int l, int r){
    vector<int>dp;
    for(int i=1; i<=n; i++){
        if(i>=l && i<=r){
            int pos=lower_bound(dp.begin(),dp.end(), a[i]+x)-dp.begin();
            if(pos==dp.size()){
                dp.push_back(a[i]+x);
            }else{
                dp[pos]=a[i]+x;
            }
        }else{
            int pos=lower_bound(dp.begin(),dp.end(), a[i])-dp.begin();
            if(pos==dp.size()){
                dp.push_back(a[i]);
            }else{
                dp[pos]=a[i];
            }
        }
        
    }return dp.size();
}
int32_t main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    
    cin>>n>>x;
    vector<int> a(n+1);
    int mx2=0;
    for(int i=1; i<=n; i++){
        cin>>a[i];
        
        mx2=max(mx2, a[i]);
        
    }int mx1=0;
    x=min(x, mx2);
    mx1= max(mx1, mx(a, 0, 0));
    for(int i=1; i<=n; i++){
        
        //mx1= max(mx1, mx(a, i, i));
        //mx1= max(mx1, mx(a, 1, i));
        mx1= max(mx1, mx(a, i, n));
        //cout<<i<<" "<<mx(a, 1, i)<<" "<<mx(a, i, n)<<endl; 
        
    }
    cout<<mx1<<endl;

    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...