#include <bits/stdc++.h> using namespace std; const int MAX_SIZE = 6; int main() { vector<int> input = {1, 2, 3, -1, -1, 4, 5, 6, 7, 8, 0}; // vector<int> input = {1, -1, -1, 2, 3, -1, -1, 4, 5, 6, 7, 8, 9, 0}; int data[MAX_SIZE] = {0}; int head = 0; int len = 0; for (int i = 0; i < input.size(); i++) { // dbg // cout << "head: " << head << ", len: " << len << ' '; // for (int j = 0; j < MAX_SIZE; j++) { // cout << data[j] << " "; // } // cout << endl; int now = input[i]; // end of input if (now == 0) { break; } // pop from queue if (now == -1) { if (len == 0) { cerr << "Error: queue is empty when pop" << endl; return 1; } head = (head + 1) % MAX_SIZE; len--; continue; } // push to queue if (len == MAX_SIZE) { cerr << "Error: queue is full when push" << endl; return 1; } data[(head + len) % MAX_SIZE] = now; len++; } } #include <bits/stdc++.h> using namespace std; const int MAXN = 1e5 + 5; int main() { int stack[MAXN]; int top = 0; string s = "(([{}][{}]))"; for (int i = 0; i < s.size(); i++) { if (s[i] == '(' || s[i] == '[' || s[i] == '{') { stack[top++] = s[i]; continue; } if (top == 0) { cout << "NO" << endl; return 0; } if (s[i] == ')' && stack[top - 1] == '(') { top--; } else if (s[i] == ']' && stack[top - 1] == '[') { top--; } else if (s[i] == '}' && stack[top - 1] == '{') { top--; } else { cout << "NO" << endl; return 0; } } }