제출 #525471

#제출 시각아이디문제언어결과실행 시간메모리
525471ammar2000Global Warming (CEOI18_glo)C++17
100 / 100
54 ms8544 KiB
#include<bits/stdc++.h> #define ll long long #define pb push_back #define F first #define S second #define coy cout<<"YES\n" #define con cout<<"NO\n" #define co1 cout<<"-1\n" #define sc(x) scanf("%lld",&x) #define all(x) x.begin(),x.end() #define fast ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); using namespace std; const int SI=3e5+7; ll INF=8e18+7; int dx[] = {1 , -1 , 0 , 0}; int dy[] = {0 , 0 , 1 , -1}; int MOD=1e9+7; ll n,x,a[SI],pr[SI]; int main() { fast cin>>n>>x; for (int i=0;i<n;i++) cin>>a[i]; vector <ll> dp(n,INF); for (int i=0;i<n;i++) { ll j=lower_bound(dp.begin(),dp.end(),a[i])-dp.begin(); dp[j]=a[i]; pr[i]=j+1; } ll ans=0; vector <ll> dp2(n,INF); for (int i=n-1;i>=0;i--) { ll j=lower_bound(dp2.begin(),dp2.end(),-a[i]+x)-dp2.begin(); ans=max(ans,pr[i]+j); j=lower_bound(dp2.begin(),dp2.end(),-a[i])-dp2.begin(); dp2[j]=-a[i]; } cout <<ans<<"\n"; // use scanf not cin 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...