제출 #1200244

#제출 시각아이디문제언어결과실행 시간메모리
1200244brover29Volontiranje (COCI21_volontiranje)C++17
0 / 110
10 ms23872 KiB
#include <bits/stdc++.h> //qwerty47924692 using namespace std; using ll = int; const ll N=1e6+29; const string br="617283"; #define sz(a)(ll)a.size() #define f first #define s second ll n,k,a[N],b[N],mx; vector<ll>q[N]; vector<vector<ll>>ans; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin>>n; for(ll i=1;i<=n;i++){ cin>>a[i]; ll j=lower_bound(b,b+mx+1,a[i])-b; if(j==mx+1){ mx++; b[mx]=a[i]; q[j].push_back(i); }else{ b[j]=a[i]; q[j].push_back(i); } }for(ll i=0;i<=mx;i++)reverse(q[i].begin(),q[i].end()); while(q[1].size()){ ll v=1; ll i=q[v].back(); // cout<<i<<' '<<v<<'\n'; q[v].pop_back(); vector<ll>b; b.push_back(i); ll check=1; while(v!=mx){ v++; if(q[v].empty()){ check=0; break; } while(q[v].size()&&q[v].back()<i){ q[v].pop_back(); }if(a[q[v].back()]<a[i]){ v--; if(q[v].empty()){ check=0; break; } i=q[v].back(); // cout<<i<<' '<<v<<'\n'; q[v].pop_back(); b.pop_back(); b.push_back(i); continue; } i=q[v].back(); // cout<<i<<' '<<v<<'\n'; q[v].pop_back(); b.push_back(i); }if(!check)break; ans.push_back(b); } cout<<ans.size()<<' '<<mx<<'\n'; for(auto vv:ans){ sort(vv.begin(),vv.end()); for(ll i:vv){ cout<<i<<' '; } cout<<'\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...