Submission #952888

#TimeUsernameProblemLanguageResultExecution timeMemory
952888irmuunGlobal Warming (CEOI18_glo)C++17
17 / 100
42 ms7636 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() #define rall(s) s.rbegin(),s.rend() int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); ll n,x; cin>>n>>x; ll t[n+5]; for(ll i=1;i<=n;i++){ cin>>t[i]; } ll pre[n+5]; vector<ll>v; for(ll i=1;i<=n;i++){ if(v.empty()||v.back()<t[i]){ v.pb(t[i]); pre[i]=v.size(); } else{ ll x=lower_bound(all(v),t[i])-v.begin(); v[x]=t[i]; pre[i]=x+1; } } v.clear(); ll suf[n+5]; suf[n+1]=0; for(ll i=n;i>=1;i--){ if(v.empty()||v.back()<-t[i]){ v.pb(-t[i]); suf[i]=v.size(); } else{ ll x=lower_bound(all(v),-t[i])-v.begin(); v[x]=-t[i]; suf[i]=x+1; } if(i<n){ suf[i]=max(suf[i],suf[i+1]); } } ll ans=suf[1]; for(ll i=1;i<=n;i++){ ans=max(ans,pre[i]+suf[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...