Submission #1326622

#TimeUsernameProblemLanguageResultExecution timeMemory
1326622jadai007Global Warming (CEOI18_glo)C++17
100 / 100
39 ms2484 KiB
#include <bits/stdc++.h>

using namespace std;

int n, x, it, a[200200], dp[200200], ans;
vector<int> lis;

int main(){
    cin.tie(nullptr)->sync_with_stdio(false);
    cin >> n >> x;
    for(int i = 1; i <= n; ++i){
        cin >> a[i];
        it = lower_bound(lis.begin(), lis.end(), a[i]) - lis.begin();
        if(it == lis.size()) lis.push_back(a[i]);
        else lis[it] = a[i];
        dp[i] = it + 1;
        ans = max(ans, dp[i]);
    }
    lis.clear();
    for(int i = n; i > 0; --i){
        it = lower_bound(lis.begin(), lis.end(), -a[i] + x) - lis.begin();
        ans = max(ans, it + dp[i]);
        it = lower_bound(lis.begin(), lis.end(), -a[i]) - lis.begin();
        if(it == lis.size()) lis.push_back(-a[i]);
        else lis[it] = -a[i];
    }
    cout << ans;
}
#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...