제출 #1198053

#제출 시각아이디문제언어결과실행 시간메모리
1198053brover29Volontiranje (COCI21_volontiranje)C++17
50 / 110
1093 ms1048 KiB
#include <bits/stdc++.h> //qwerty47924692 using namespace std; using ll = long long; const ll N=2e5+29; const string br="617283"; #define sz(a)(ll)a.size() #define f first #define s second ll n,k,dp[N],pr[N],a[N]; vector<vector<ll>>v; ll mx=0; bool get(){ ll cur=0; for(ll i=1;i<=n;i++){ dp[i]=-1e18; if(a[i]==-1e18)continue; dp[i]=1; pr[i]=0; for(ll j=1;j<i;j++){ if(a[j]<a[i]){ if(dp[i]<=dp[j]+1){ dp[i]=dp[j]+1; pr[i]=j; } } }cur=max(cur,dp[i]); }vector<ll>b; if(cur!=mx)return 0; for(ll i=n;i>=1;i--){ if(dp[i]==cur){ while(i!=0){ b.push_back(i); a[i]=-1e18; i=pr[i]; } v.push_back(b); break; } } return 1; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin>>n; for(ll i=1;i<=n;i++){ cin>>a[i]; dp[i]=1; for(ll j=1;j<i;j++){ if(a[j]<a[i]){ if(dp[i]<=dp[j]+1){ dp[i]=dp[j]+1; pr[i]=j; } } } mx=max(mx,dp[i]); } while(get()){ continue; }cout<<v.size()<<' '<<mx<<'\n'; for(auto vv:v){ reverse(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...