제출 #1072754

#제출 시각아이디문제언어결과실행 시간메모리
1072754SiliconSquaredGlobal Warming (CEOI18_glo)C++14
42 / 100
201 ms13160 KiB
using namespace std;

#include <iostream>
#include <vector>
#include <set>

vector<int> v;
int n,z,x,a,b;
int sub4(){
    set<int> s;
    for (int i=0;i<n;i++){
        a=v[i];
        if (s.lower_bound(a)==s.end()){
            s.insert(a);
        }else{
            s.erase(s.lower_bound(a));
            s.insert(a);
        }
    }
    return s.size();
}
int sub12(){
    z=0;
    for (int i=0;i<n;i++){
        for (int j=i;j<n;j++){
            for (int k=-x;k<=x;k++){
                for (int l=i;l<=j;l++){
                    v[l]+=k;
                }
                z=max(z,sub4());
                for (int l=i;l<=j;l++){
                    v[l]-=k;
                }
            }
        }
    }
    return z;
}
int sub6(){
    vector<int> l;
    vector<int> r;
    l.resize(n);
    r.resize(n);
    set<int> s;
    set<int,greater<int>> t;
    for (int i=0;i<n;i++){
        a=v[i];
        if (s.lower_bound(a)==s.end()){
            s.insert(a);
        }else{
            s.erase(s.lower_bound(a));
            s.insert(a);
        }
        l[i]=s.size();
    }
    for (int i=n-1;i>=0;i--){
        a=v[i];
        if (t.lower_bound(a)==t.end()){
            t.insert(a);
        }else{
            t.erase(t.lower_bound(a));
            t.insert(a);
        }
        r[i]=t.size();
    }
    z=l[n-1];
    for (int i=0;i<n-1;i++){
        z=max(z,l[i]+r[i+1]);
    }
    return z;
}
int main(){
    cin>>n>>x;
    v.resize(n);
    for (int i=0;i<n;i++){
        cin>>v[i];
    }
    if (x==0){
        cout<<sub4();
    }else if (n<=50&&x<=50){
        cout<<sub12();
    }else{
        cout<<sub6();
    }
}
#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...