Submission #1319420

#TimeUsernameProblemLanguageResultExecution timeMemory
1319420AgageldiGlobal Warming (CEOI18_glo)C++20
100 / 100
46 ms6696 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define N 500005

const int inf = 1e18;

int tc = 1, n, a[N], t, pref[N];

int32_t main() {
    ios::sync_with_stdio(0);cin.tie(0);
    cin >> n >> t;
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    vector <int> v(n + 1,INT_MAX);
    for(int i = 1; i <= n; i++) {
        auto l = lower_bound(v.begin(),v.end(), a[i]) - v.begin();
        v[l] = a[i];
        pref[i] = l + 1;
    }
    int longest_ans = 0;
    v = vector<int> (n + 1, INT_MAX);
    for(int i = n; i >= 1; i--) {
        auto l = lower_bound(v.begin(),v.end(), -a[i] + t) - v.begin();
        longest_ans = max(longest_ans, pref[i] + l);
        int ins = lower_bound(v.begin(),v.end(), -a[i]) - v.begin();
        v[ins] = -a[i];
    }
    cout << longest_ans << '\n';
    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...