Submission #751269

#TimeUsernameProblemLanguageResultExecution timeMemory
751269bgnbvnbvVolontiranje (COCI21_volontiranje)C++14
10 / 110
17 ms23884 KiB
#include<bits/stdc++.h> #define TASKNAME "codeforce" #define pb push_back #define pli pair<int,int> #define fi first #define se second #define fastio ios_base::sync_with_stdio(false); cin.tie(NULL); using namespace std; using ll=int; const ll maxN=1e6+10; const ll mod=1e9+7; ll n,a[maxN],e[maxN]; vector<ll>vec[maxN]; void solve() { cin >> n; for(int i=1;i<=n;i++) cin >> a[i]; ll m=0; for(int i=1;i<=n;i++) { ll x=lower_bound(e+1,e+m+1,a[i])-e; if(x>m) m++; vec[x].pb(i); e[x]=a[i]; } for(int i=1;i<=m;i++) reverse(vec[i].begin(),vec[i].end()); vector<vector<ll>> ans; while(vec[m].size()) { bool ok=true; ll v=vec[m].back(); vec[m].pop_back(); ll cur=v; for(int i=m-1;i>=1;i--) { while(vec[i].size()>0&&a[vec[i].back()]>a[v]) { vec[i].pop_back(); } if(vec[i].size()>0&&vec[i].back()<v) v=vec[i].back(); else {ok=false;} } if(ok) { vector<ll> cc; cc.pb(cur); for(int i=m-1;i>=1;i--) { cc.pb(vec[i].back()); vec[i].pop_back(); } reverse(cc.begin(),cc.end()); ans.pb(cc); } } cout << ans.size()<<' '<<m<<'\n'; for(auto zz:ans) { for(auto vc:zz) cout << vc<<' '; cout << '\n'; } } int main() { fastio //freopen(TASKNAME".INP","r",stdin); //freopen(TASKNAME".OUT","w",stdout); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...