제출 #1218760

#제출 시각아이디문제언어결과실행 시간메모리
1218760muhammadali_2009Global Warming (CEOI18_glo)C++20
17 / 100
43 ms6472 KiB
#include <bits/stdc++.h>
#define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define endl '\n'
#define ll long long
#define int long long
#define all(x) x.begin(), x.end()
#define seea(x) for(int i = 0; i < x; i++)
#define pb push_back
#define vc vector

using namespace std;

const int INF = INT_MAX;

void solve() {
    int n, x;
    cin >> n >> x;
    vc<int> a(n);
    seea(n) cin >> a[i];
    vc<int> pref(n+1), suf(n+2), dp(n, INF);
    int ans = 1;
    for(int i = 1; i <= n; i++){
        int j = lower_bound(all(dp), a[i-1]) - dp.begin();
        dp[j] = a[i-1];
        pref[i] = lower_bound(all(dp), INF) - dp.begin();
        ans = max(ans, pref[i]);
    }
    dp.assign(n, INF);
    for(int i = n; i >= 1; i--){
        suf[i] = lower_bound(all(dp), -a[i-1] + x) - dp.begin();
        int ins = lower_bound(all(dp), -a[i-1]) - dp.begin();
        dp[ins] = -a[i-1];
    }
    for(int i = 1; i <= n; i++){
        ans = max(ans, pref[i] + suf[i]);
    }
    cout << ans << endl;
}

signed main(){
    fast;
    int t = 1;
    while(t--) solve();
}
#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...