# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
745246 | 2023-05-19T15:43:39 Z | Ahmed57 | Volontiranje (COCI21_volontiranje) | C++17 | 1 ms | 340 KB |
#include <bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; vector<pair<int,int>> v; for(int i = 0;i<n;i++){ int x;cin>>x; v.push_back({x,i}); } int be = -1, cnt = 0; vector<vector<pair<int,int>>> ans; while(1){ int dp[v.size()] = {0}; int pr[v.size()] = {0}; int all= 0 ,index = 0; for(int i=0 ;i<v.size();i++){ int ma = 0, ind =i; for(int j = i-1;j>=0;j--){ if(v[i].first>v[j].first){ if(ma<dp[j]){ ma=dp[j]; ind = j; } } } dp[i] = ma+1; pr[i] = ind; if(all<dp[i]){ all= dp[i]; index = i; } } if(all<be){ break; } cnt++; be = all; ans.push_back({}); while(pr[index]!=index){ ans.back().push_back({index,v[index].second}); index= pr[index]; }ans.back().push_back({index,v[index].second}); vector<pair<int,int>> z;int cnt = 0; reverse(ans.back().begin(),ans.back().end()); for(int i = 0;i<ans.back().size();i++){ while(cnt<ans.back()[i].first){ z.push_back(v[cnt++]); } cnt++; } while(cnt<v.size()){ z.push_back(v[cnt++]); } v = z; } cout<<cnt<<" "<<be<<endl; for(auto i:ans){ for(auto j:i){ cout<<j.second+1<<" "; } cout<<endl; } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 340 KB | Output is correct |
2 | Incorrect | 1 ms | 212 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 340 KB | Output is correct |
2 | Incorrect | 1 ms | 212 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 340 KB | Output is correct |
2 | Incorrect | 1 ms | 212 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |