제출 #882740

#제출 시각아이디문제언어결과실행 시간메모리
882740AongGlobal Warming (CEOI18_glo)C++14
100 / 100
52 ms5460 KiB
#include <bits/stdc++.h> using namespace std; #define sp(x) fixed << setprecision(x) #define endl '\n' #define all(sord) sord.begin(),sord.end() #define pii pair<int,int> #define f first #define s second #define pb push_back #define ll long long int a[200010],lisend[200010]; int main(){ cin.tie(nullptr)->sync_with_stdio(0); int n,x,idx,cnt=0,lis=0; cin >> n >> x; for(int i=0;i<n;i++){ cin >> a[i]; } vector<int> dp(n,INT_MAX); for(int i=0;i<n;i++){ idx = lower_bound(dp.begin(),dp.end(),a[i]) - dp.begin(); if(idx == cnt) cnt++; dp[idx] = a[i]; lisend[i] = idx+1; lis = max(lis,lisend[i]); } dp = vector<int>(n,INT_MAX); for(int i = n;i>=0;i--){ idx = lower_bound(dp.begin(),dp.end(), -1 * a[i] + x) - dp.begin(); lis = max(lisend[i] + idx, lis ); idx = lower_bound(dp.begin(),dp.end(), -1 * a[i]) - dp.begin(); dp[idx] = -1 * a[i]; } cout << lis; 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...