제출 #1085691

#제출 시각아이디문제언어결과실행 시간메모리
1085691vjudge1Global Warming (CEOI18_glo)C++17
100 / 100
39 ms5096 KiB
#include <bits/stdc++.h>
 
using namespace std;

int n, x;
int t[200005];

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> x;
    for (int i=0;i<n;i++)
        cin >> t[i];
    vector<int> rez;
    int lis[n], najdolga;
    for (int i=0;i<n;i++) {
        auto it=lower_bound(rez.begin(), rez.end(), t[i]);
        int index=it-rez.begin();
        lis[i]=index+1;
        if (it==rez.end())
            rez.push_back(t[i]);
        else *it=t[i];
    }
    najdolga=rez.size();
    rez.clear();
    int lds[n];
    for (int i=n-1;i>=0;i--) {
        auto it=lower_bound(rez.begin(), rez.end(), -t[i]+x);
        int index=it-rez.begin();
        lds[i]=index+1;
        it=lower_bound(rez.begin(), rez.end(), -t[i]);
        if (it==rez.end())
            rez.push_back(-t[i]);
        else *it=-t[i];
    }
    for (int i=0;i<n;i++)
        najdolga=max(najdolga, lis[i]+lds[i]-1);
    cout << najdolga;
 
    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...