제출 #1186858

#제출 시각아이디문제언어결과실행 시간메모리
1186858loomGlobal Warming (CEOI18_glo)C++20
100 / 100
36 ms4752 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define inf 5e18 #define nl '\n' inline void solve(){ int n, x; cin>>n>>x; int a[n]; for(int i=0; i<n; i++) cin>>a[i]; int pre[n]; vector<int> v; for(int i=0; i<n; i++){ if(v.empty() or v.back() < a[i]){ v.push_back(a[i]); pre[i] = v.size(); continue; } int ix = lower_bound(v.begin(), v.end(), a[i]) - v.begin(); v[ix] = a[i]; pre[i] = ix+1; } int ans = 0; v.clear(); for(int i=n-1; i>=0; i--){ if(v.empty() or v.back() > a[i]) v.push_back(a[i]); else *--upper_bound(v.rbegin(), v.rend(), a[i]) = a[i]; if(i == 0) ans = max(ans, (int)v.size()); else ans = max(ans, pre[i-1] + (int)v.size() - (upper_bound(v.rbegin(), v.rend(), a[i-1] - x) - v.rbegin())); } cout<<ans; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(NULL);cout.tie(NULL); int t = 1; //cin>>t; while(t--) solve(); 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...