Submission #1172617

#TimeUsernameProblemLanguageResultExecution timeMemory
1172617nguyenkhangninh99Global Warming (CEOI18_glo)C++17
100 / 100
36 ms5824 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
    ios_base::sync_with_stdio(0); 
    cin.tie(0); cout.tie(0);
    
    int n, x; cin >> n >> x;
    
    vector<int> a(n + 1), dp(n + 1), b, c;

    for(int i = 0; i < n; i++){
        cin >> a[i];
        int id = lower_bound(b.begin(), b.end(), a[i]) - b.begin();
        if(b.empty() || a[i] > b.back()) b.push_back(a[i]);
        else b[id] = a[i];
        dp[i] = id + 1;
    }

    for(int i = n - 1; i >= 0; i--){
        dp[i] += lower_bound(c.begin(), c.end(), -a[i] + x) - c.begin();
        if(c.empty() || -a[i] > c.back()) c.push_back(-a[i]);
        else c[lower_bound(c.begin(), c.end(), -a[i]) - c.begin()] = -a[i];
    }
    cout << *max_element(dp.begin(), dp.end());
}
#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...