Submission #1274849

#TimeUsernameProblemLanguageResultExecution timeMemory
1274849warrennGlobal Warming (CEOI18_glo)C++20
100 / 100
86 ms4680 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long 

signed main(){
    int n,x;
    cin>>n>>x;
    int t[n+1];
    int lis[n+1];

    for(int q=1;q<=n;q++){
        cin>>t[q];
    }

    vector<int>tmp;
    for(int q=1;q<=n;q++){
        int idx=lower_bound(tmp.begin(),tmp.end(),t[q])-tmp.begin();
        if(idx==tmp.size()){
            lis[q]=tmp.size()+1;
            tmp.push_back(t[q]);
        }
        else{
            lis[q]=idx+1;
            tmp[idx]=t[q];
        }
    }
    int ans=0;
    tmp.clear();
    for(int q=n;q>=1;q--){
        int idx=lower_bound(tmp.begin(),tmp.end(),x-t[q])-tmp.begin();

        ans=max(ans,lis[q]+idx);
        ans=max(ans,lis[q]);
        idx=lower_bound(tmp.begin(),tmp.end(),-t[q])-tmp.begin();
        if(idx==tmp.size()){
            tmp.push_back(-t[q]);
        }
        else{
            tmp[idx]=-t[q];
        }
    }
    cout<<ans<<endl;
}
#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...