Submission #1326436

#TimeUsernameProblemLanguageResultExecution timeMemory
1326436hoangtien69Global Warming (CEOI18_glo)C++20
100 / 100
41 ms2760 KiB
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 5;

int n, d;
int a[MAXN];
int ans = 1;
int pre[MAXN];

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin >> n >> d;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    vector<int> peal(n + 1, INT_MAX);
    for (int i = 1; i <= n; i++)
    {
        int pos = lower_bound(peal.begin(), peal.end(), a[i]) - peal.begin();
        peal[pos] = a[i];
        pre[i] = pos + 1;
        ans = max(ans, pre[i]);
    }
    for (int i = 0; i <= n; i++)
    {
        peal[i] = INT_MAX;
    }
    for (int i = n; i >= 1; i--)
    {
        int pos = lower_bound(peal.begin(), peal.end(), -a[i] + d) - peal.begin();
        ans = max(ans, pre[i] + pos);
        int cak = lower_bound(peal.begin(), peal.end(), -a[i]) - peal.begin();
        peal[cak] = -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...