Submission #1167084

#TimeUsernameProblemLanguageResultExecution timeMemory
1167084CiprianGlobal Warming (CEOI18_glo)C++20
10 / 100
2095 ms4544 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);
    if(x==0){
        mx1= max(mx1, mx(a, 0, 0));
    }
    else{
        mx1= max(mx1, mx(a, 0, 0));
        for(int i=1; i<=n; i++){
            /*for(int j=i; j<=n; j++){
                mx1= max(mx1, mx(a, i, j));
                
            }*/
            mx1= max(mx1, mx(a, i-1, i));
            mx1= max(mx1, mx(a, i, i));
            mx1= max(mx1, mx(a, max(1LL, i-2), i));
            mx1= max(mx1, mx(a, max(1LL, i-3), i));
            mx1= max(mx1, mx(a, max(1LL, i-4), i));
            mx1= max(mx1, mx(a, max(1LL, i-5), i));
        }
    }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...