제출 #1243229

#제출 시각아이디문제언어결과실행 시간메모리
1243229datluong_04Global Warming (CEOI18_glo)C++20
100 / 100
42 ms6488 KiB
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define FOR(i , a , b) for(int i = a ; i <= b ; i++)
#define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define maxn 200005
#define REVERSE(i , a , b) for(int i = a; i  >= b; i--)

ll a[maxn] , b[maxn] , c[maxn];

int l[maxn] , r[maxn];

int main(){
    FAST;
    int n;
    ll x;
    cin >> n >> x;
    FOR(i , 1 , n) cin >> a[i];
    FOR(i , 1 , n) b[i] = LLONG_MAX;

    int ans = 0;
    FOR(i , 1 , n){
        int k = lower_bound(b + 1 , b + n + 1, a[i]) - b;
        b[k] = a[i];
        l[i] = k;
    }

    FOR(i , 1 , n) b[i] = LLONG_MAX;

    FOR(i , 1 , n) c[i] = a[n - i + 1];

    FOR(i , 1 , n){
        int k = lower_bound(b + 1 , b + n + 1, -c[i] + x) - b;
        r[n - i + 1] = k;
        int pos = lower_bound(b + 1 , b + n + 1 , -c[i]) - b;
        b[pos] = -c[i];
    }

    FOR(i , 1 , n) ans = max(ans , l[i] + r[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...