Submission #133848

#TimeUsernameProblemLanguageResultExecution timeMemory
133848miguelGlobal Warming (CEOI18_glo)C++14
100 / 100
71 ms7792 KiB
#include<bits/stdc++.h> using namespace std; #define rc(x) return cout<<x<<endl,0 #define pb push_back #define dbg(x) cout << #x << '=' << x << '\n'; #define ll long long #define int ll #define sz size() #define x first #define y second #define pi pair <int, int> #define pii pair <pi, pi> #define vi vector <int> const ll nmax=5e4+2; const ll mod = 998244353; int n, x, s[200001], a[200001]; vector <int> dp; int32_t main(){ ios_base :: sync_with_stdio(0); cin.tie(); cout.tie(); cin>>n>>x; //dp.pb(0); for(int i=1; i<=n; i++){ cin>>a[i]; auto it=lower_bound(dp.begin(), dp.end(), a[i]); if(it==dp.end()){ dp.pb(a[i]); s[i]=dp.size(); } else{ dp[it-dp.begin()]=a[i]; s[i]=it-dp.begin()+1; } } // for(int i: dp) cout<<i<<" "; cout<<endl; //for(int i=1; i<=n; i++) cout<<s[i]<<" "; int ans=dp.size(); vi lsd; for(int i=n; i>=1; --i){ auto it=lower_bound(lsd.begin(), lsd.end(), -a[i]); if(it==lsd.end()) ans=max(ans, s[i]+(int)lsd.size()); else ans=max(ans, s[i]+(it-lsd.begin())); auto it1=lower_bound(lsd.begin(), lsd.end(), -a[i]-x); if(it1==lsd.end()) lsd.pb(-a[i]-x); else lsd[it1-lsd.begin()]=-a[i]-x; } 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...