# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
255210 | 2020-07-31T14:32:15 Z | Kastanda | Zalmoxis (BOI18_zalmoxis) | C++11 | 230 ms | 24396 KB |
// M #include<bits/stdc++.h> using namespace std; const int N = 1000006; int n, k, kk, A[N]; vector < int > Rs; inline bool Check() { vector < int > Stk; for (int i = 0; i < (int)Rs.size(); i ++) { int nw = Rs[i]; if (Stk.size() && Stk.back() < nw) return 0; while (Stk.size() && Stk.back() == nw) Stk.pop_back(), nw ++; Stk.push_back(nw); } return (Stk.size() == 1 && Stk[0] == 30); } void Print(int a) { if (k > (1 << a) - 1) { for (int i = 0; i < (1 << a); i ++) Rs.push_back(0); k -= (1 << a) - 1; return ; } while (a && k) { if ((1 << (a - 1)) <= k) { for (int i = 0; i < (1 << (a - 1)); i ++) Rs.push_back(0); k -= 1 << (a - 1); a --; continue; } Rs.push_back(a - 1); k --; a --; } Rs.push_back(a); return ; /*if (!k || !a) return void(printf("%d ", a)); k --; Print(a - 1); Print(a - 1); return ;*/ } int main() { scanf("%d%d", &n, &k); kk = k; for (int i = 1; i <= n; i ++) scanf("%d", &A[i]); vector < pair < int , int > > R; vector < int > Stk; Stk.push_back(A[1]); R.push_back({A[1], 0}); A[++ n] = 30; for (int i = 2; i <= n; i ++) { int nw = A[i]; while (Stk.size() && Stk.back() == nw) Stk.pop_back(), nw ++; if (!Stk.size() || Stk.back() > nw) Stk.push_back(nw); else { assert(nw == A[i]); R.push_back({Stk.back(), 1}), k --; while (Stk.size() && Stk.back() < nw) { int a = Stk.back(), c = 0; Stk.pop_back(); int trg = Stk.size() ? Stk.back() : 30; trg = min(trg, nw); while (a < trg) { if (c) R.push_back({a, 1}), k --; a ++; c ++; } } while (Stk.size() && Stk.back() == nw) Stk.pop_back(), nw ++; Stk.push_back(nw); nw = A[i]; while (Stk.size() && Stk.back() == nw) Stk.pop_back(), nw ++; } R.push_back({A[i], 0}); } R.pop_back(); n --; for (auto X : R) { if (!X.second) Rs.push_back(X.first); else Print(X.first); } //assert((int)Rs.size() == n + kk); //assert(Check()); for (int a : Rs) printf("%d ", a); printf("\n"); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 208 ms | 22224 KB | Output is correct |
2 | Correct | 196 ms | 22228 KB | Output is correct |
3 | Correct | 206 ms | 22224 KB | Output is correct |
4 | Correct | 203 ms | 22224 KB | Output is correct |
5 | Correct | 201 ms | 22228 KB | Output is correct |
6 | Correct | 201 ms | 22228 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 203 ms | 22224 KB | not a zalsequence |
2 | Incorrect | 203 ms | 22352 KB | Expected EOF |
3 | Incorrect | 211 ms | 24396 KB | Expected EOF |
4 | Incorrect | 206 ms | 22224 KB | not a zalsequence |
5 | Incorrect | 230 ms | 22292 KB | not a zalsequence |
6 | Incorrect | 204 ms | 22224 KB | not a zalsequence |
7 | Incorrect | 204 ms | 22228 KB | not a zalsequence |
8 | Incorrect | 209 ms | 22228 KB | not a zalsequence |
9 | Incorrect | 189 ms | 20944 KB | not a zalsequence |
10 | Incorrect | 130 ms | 10980 KB | not a zalsequence |
11 | Incorrect | 146 ms | 17488 KB | not a zalsequence |
12 | Incorrect | 87 ms | 6488 KB | not a zalsequence |
13 | Incorrect | 81 ms | 6372 KB | not a zalsequence |
14 | Correct | 77 ms | 6368 KB | Output is correct |