# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
647189 | 2022-10-01T21:26:02 Z | Alenygam | Zalmoxis (BOI18_zalmoxis) | C++14 | 14 ms | 23872 KB |
#include <bits/stdc++.h> using namespace std; struct btNode { int value; bool left; bool right; }; struct linkedListNode { int8_t val; linkedListNode *next = nullptr; bool inserted = false; }; linkedListNode preallocLinked[1000001]; int lastNodeLnkd = 0; static linkedListNode* get_new_lnkd_node() { return &preallocLinked[lastNodeLnkd++]; } int main() { #ifdef EVAL freopen("zalmoxis.in", "r", stdin); freopen("zalmoxis.out", "w", stdout); #endif ios_base::sync_with_stdio(false); cin.tie(0); int N, K; cin >> N >> K; vector<int> values(N); for (auto &i: values) cin >> i; linkedListNode *head = get_new_lnkd_node(); linkedListNode *tail = head; stack<btNode> stck; stck.push(btNode{30, 0, 0}); for (int i = 0; i < N; i++) { while (stck.size() > 1 && (values[i] >= stck.top().value || (stck.top().left && stck.top().right))) { btNode &top = stck.top(); if (!top.right && top.value != 0) { tail->next = get_new_lnkd_node(); tail = tail->next; tail->val = top.value - 1; if (top.value == 1) tail->inserted = false; else tail->inserted = true; top.right = true; } stck.pop(); } tail->next = get_new_lnkd_node(); tail = tail->next; tail->val = values[i]; tail->inserted = false; while (stck.top().value != values[i]) { btNode &top = stck.top(); if (top.left) { // I have to go right (left completely explored) btNode right; right.value = top.value - 1; top.right = true; stck.push(right); } else { // I can go left btNode left; left.value = top.value - 1; top.left = true; stck.push(left); } } stck.pop(); // node is == values[i], algorithm would never run next while loop while (stck.size() > 1 && stck.top().left && stck.top().right) { btNode &top = stck.top(); if (!top.right && top.value != 0) { tail->next = get_new_lnkd_node(); tail = tail->next; tail->val = top.value - 1; if (top.value == 1) tail->inserted = false; else tail->inserted = true; top.right = true; } stck.pop(); } // maybe this works idk } while (!stck.empty()) { btNode top = stck.top(); if (!top.right && top.value != 0) { tail->next = get_new_lnkd_node(); tail = tail->next; tail->val = top.value - 1; if (top.value == 1) tail->inserted = false; else tail->inserted = true; } stck.pop(); } head = head->next; while (head != nullptr) { cout << (int)head->val << ' '; head = head->next; } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 12 ms | 23764 KB | Unexpected end of file - int32 expected |
2 | Incorrect | 11 ms | 23764 KB | Unexpected end of file - int32 expected |
3 | Incorrect | 12 ms | 23764 KB | Unexpected end of file - int32 expected |
4 | Incorrect | 11 ms | 23824 KB | Unexpected end of file - int32 expected |
5 | Incorrect | 11 ms | 23796 KB | Unexpected end of file - int32 expected |
6 | Incorrect | 11 ms | 23764 KB | Unexpected end of file - int32 expected |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 11 ms | 23764 KB | Unexpected end of file - int32 expected |
2 | Incorrect | 11 ms | 23764 KB | Unexpected end of file - int32 expected |
3 | Incorrect | 11 ms | 23764 KB | Unexpected end of file - int32 expected |
4 | Incorrect | 13 ms | 23820 KB | Unexpected end of file - int32 expected |
5 | Incorrect | 10 ms | 23764 KB | Unexpected end of file - int32 expected |
6 | Incorrect | 11 ms | 23776 KB | Unexpected end of file - int32 expected |
7 | Incorrect | 11 ms | 23764 KB | Unexpected end of file - int32 expected |
8 | Incorrect | 11 ms | 23764 KB | Unexpected end of file - int32 expected |
9 | Incorrect | 10 ms | 23764 KB | Unexpected end of file - int32 expected |
10 | Incorrect | 14 ms | 23872 KB | Unexpected end of file - int32 expected |
11 | Incorrect | 11 ms | 23804 KB | Unexpected end of file - int32 expected |
12 | Incorrect | 11 ms | 23804 KB | Unexpected end of file - int32 expected |
13 | Incorrect | 12 ms | 23796 KB | Unexpected end of file - int32 expected |
14 | Incorrect | 14 ms | 23768 KB | Unexpected end of file - int32 expected |