제출 #1200246

#제출 시각아이디문제언어결과실행 시간메모리
1200246brover29Volontiranje (COCI21_volontiranje)C++17
0 / 110
11 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...