Submission #1164119

#TimeUsernameProblemLanguageResultExecution timeMemory
1164119canhnam357Global Warming (CEOI18_glo)C++20
100 / 100
43 ms3532 KiB
#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
void ckmax(int& f, int s)
{
    f = (f > s ? f : s);
}
void ckmin(int& f, int s)
{
    f = (f < s ? f : s);
}
int32_t main() 
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n, x;
    cin >> n >> x;
    vector<int> a(n);
    for (int& i : a) cin >> i;
    vector<int> lis(n, INT_MAX);
    vector<int> pre(n);
    for (int i = 0; i < n; i++)
    {
        auto it = lower_bound(all(lis), a[i]);
        pre[i] = it - lis.begin() + 1;
        *it = a[i];
    }
    lis = vector<int>(n, INT_MAX);
    int ans = *max_element(all(pre));
    for (int i = n - 1; i >= 0; i--)
    {
        auto it = lower_bound(all(lis), -a[i] + x);
        ans = max(ans, (int)(it - lis.begin() + pre[i]));
        it = lower_bound(all(lis), -a[i]);
        *it = -a[i];
    }
    cout << ans;
    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...