# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
668289 | 2022-12-03T14:54:58 Z | MrDeboo | Zalmoxis (BOI18_zalmoxis) | C++17 | 164 ms | 35360 KB |
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define int long long #define endl '\n' using namespace std; using namespace __gnu_pbds; using ordered_set = tree<int,null_type,less_equal<int>,rb_tree_tag,tree_order_statistics_node_update>; deque<int>dqqq; int k; void ss(int a){ k++; deque<int>dq={a}; while(dq.size()*2<=k){ int x=dq.size(); for(int i=0;i<x;i++){ dq.push_back(dq[i]-1); dq.push_back(dq[i]-1); } for(int i=0;i<x;i++){ dq.pop_front(); } } int c=dq.size()*2-k; for(int i=0;i<c;i++){ k--; dqqq.push_back(dq[i]); } for(int i=c;i<dq.size();i++){ k--;k--; dqqq.push_back(dq[i]-1); dqqq.push_back(dq[i]-1); } } signed main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n; cin>>n>>k; deque<int>a,b(n); for(auto &i:b)cin>>i; deque<int>doq=b; deque<int>dq={b[0]}; deque<int>dqq={1}; a.push_back(b[0]); b.pop_front(); while(b.size()){ if(b[0]<=a.back()){ a.push_back(b[0]); dq.push_back(b[0]); dqq.push_back(1); b.pop_front(); }else{ k--; a.push_back(a.back()); dq.push_back(a.back()); dqq.push_back(0); } while(a.size()>1&&a.back()==a[a.size()-2]){ int A=a.back(); a.pop_back(); a.pop_back(); a.push_back(A+1); } } while(a.size()>1){ a.push_back(a.back()); dq.push_back(a.back()); dqq.push_back(0); k--; while(a.size()>1&&a.back()==a[a.size()-2]){ int A=a.back(); a.pop_back(); a.pop_back(); a.push_back(A+1); } } int g=a.back(); if(g==30){ if(k==0){for(auto &i:dq)cout<<i<<' ';return 0;} for(int i=0;i<dq.size();i++){ if(dqq[i])dqqq.push_back(dq[i]); else{ ss(dq[i]); } } for(auto &i:dqqq)cout<<i<<' '; } else{ for(int i=g;i<=29&&k;i++){ dq.push_back(i); k--; } int z=dq.back(); dq.pop_back(); k++; deque<int>dqq={z}; while(dqq.size()*2<=k){ int x=dqq.size(); for(int i=0;i<x;i++){ dqq.push_back(dqq[i]-1); dqq.push_back(dqq[i]-1); } for(int i=0;i<x;i++){ dqq.pop_front(); } } int c=dqq.size()*2-k; for(int i=0;i<c;i++){ k--; dq.push_back(dqq[i]); } for(int i=c;i<dqq.size();i++){ k--;k--; dq.push_back(dqq[i]-1); dq.push_back(dqq[i]-1); } assert(k==0); for(auto &i:dq)cout<<i<<' '; } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 135 ms | 27084 KB | Output is correct |
2 | Correct | 139 ms | 27048 KB | Output is correct |
3 | Correct | 138 ms | 27072 KB | Output is correct |
4 | Correct | 138 ms | 27092 KB | Output is correct |
5 | Correct | 140 ms | 27108 KB | Output is correct |
6 | Correct | 143 ms | 27084 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 154 ms | 35300 KB | Output is correct |
2 | Correct | 164 ms | 27096 KB | Output is correct |
3 | Correct | 159 ms | 35248 KB | Output is correct |
4 | Correct | 148 ms | 35308 KB | Output is correct |
5 | Correct | 153 ms | 35276 KB | Output is correct |
6 | Correct | 156 ms | 35308 KB | Output is correct |
7 | Correct | 145 ms | 35360 KB | Output is correct |
8 | Correct | 149 ms | 35272 KB | Output is correct |
9 | Correct | 150 ms | 32616 KB | Output is correct |
10 | Correct | 97 ms | 21424 KB | Output is correct |
11 | Correct | 132 ms | 25860 KB | Output is correct |
12 | Correct | 67 ms | 14888 KB | Output is correct |
13 | Correct | 83 ms | 14884 KB | Output is correct |
14 | Correct | 79 ms | 14852 KB | Output is correct |