Submission #1213892

#TimeUsernameProblemLanguageResultExecution timeMemory
1213892dubabubaGlobal Warming (CEOI18_glo)C++20
100 / 100
75 ms2700 KiB
#include <bits/stdc++.h>
using namespace std;

const int INF = 1e9 + 10;
const int mxn = 1e6 + 10;
int n, x, a[mxn], dp[mxn];

int main() {
    cin >> n >> x;
    for(int i = 0; i < n; i++)
        cin >> a[i];

    vector<int> MS(n + 1, INF);
    function<int(int)> replace = [&](int val) {
        int ind = lower_bound(MS.begin(), MS.end(), val) - MS.begin();
        MS[ind] = val;
        return ind;
    };

    for(int i = n - 1; i >= 0; i--)
        dp[i] = replace(-a[i]) + 1;

    MS.clear();
    MS.resize(n + 1, INF);
    int ans = 0;
    for(int i = 0; i < n; i++) {
        int tmp = lower_bound(MS.begin(), MS.end(), a[i]) - MS.begin();
        ans = max(ans, tmp + dp[i]);
        replace(a[i] - x);
    }

    cout << ans << endl;
    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...