Submission #1251232

#TimeUsernameProblemLanguageResultExecution timeMemory
1251232rcllGlobal Warming (CEOI18_glo)C++20
100 / 100
72 ms3428 KiB
#include <bits/stdc++.h>
using namespace std; 
int temps[200005];
int pref_longest[200005];

int main() {
    int n;
    int x;
    cin >> n >> x;
    for (int i=0; i<n; i++) {
        cin >> temps[i];
    }
    vector<int> dp(n,INT_MAX);
    int longest=0;
    for (int i=0; i<n; i++) {
        int j=lower_bound(dp.begin(),dp.end(),temps[i])-dp.begin();
        dp[j]=temps[i];
        pref_longest[i]=j+1;
        longest=max(longest,pref_longest[i]);
    }
    dp=vector<int>(n,INT_MAX);
    for (int i=n-1; i>=0; i--) {
        int pos=lower_bound(dp.begin(),dp.end(),-temps[i]+x)-dp.begin();
        longest=max(longest, pref_longest[i]+pos);
        int insert_pos=lower_bound(dp.begin(),dp.end(),-temps[i])-dp.begin();
        dp[insert_pos]=-temps[i];
    }
    cout << longest << '\n';
}
#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...