Submission #1312301

#TimeUsernameProblemLanguageResultExecution timeMemory
1312301hyyhGlobal Warming (CEOI18_glo)C++20
17 / 100
83 ms5248 KiB
#include <iostream>
#include <math.h>
#include <vector>
#include <string>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <iomanip>
#include <set>
#include <bitset>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using piii = tuple<int,int,int>;
using pibii = tuple<int,bool,int,int>;
#define endl '\n'
#define f first
#define s second

int const INF = 1e9+10;

int main(){
    int n,m;cin >> n >> m;
    vector<int> lis = {0};
    vector<int> prefix;
    vector<int> lds = {-INF};
    vector<int> suffix;
    vector<int> arr;
    for(int i = 0;i < n;i++){
        int g;cin >> g;
        arr.emplace_back(g);
        auto it = lower_bound(lis.begin(),lis.end(),g);
        // for(auto k:lis) cout << k << " ";
        // cout << endl;
        if(it != lis.end()){
            *it = g;
            prefix.emplace_back(lis.size()-1);
        }
        else{
            prefix.emplace_back(lis.size());
            lis.emplace_back(g);
        }
    }
    for(int i = n-1;i >= 0;i--){
        int g = -arr[i];
        auto it = lower_bound(lds.begin(),lds.end(),g);
        // for(auto k:lds) cout << k << " ";
        // cout << endl;
        if(it != lds.end()){
            *it = g;
            suffix.emplace_back(lds.size()-1);
        }
        else{
            suffix.emplace_back(lds.size());
            lds.emplace_back(g);
        }
    }
    reverse(suffix.begin(),suffix.end());
    // for(auto k:prefix) cout << k << " ";
    // cout << endl;
    // for(auto k:suffix) cout << k << " ";
    // cout << endl;
    int ans = lis.size()-1;
    for(int i = 0;i < n-1;i++){
        //cout << arr[i] << ans << endl;
        if(arr[i] < arr[i+1]+m){
            ans = max(ans,prefix[i]+suffix[i+1]);
        }
    }
    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...