Submission #1295539

#TimeUsernameProblemLanguageResultExecution timeMemory
1295539danirasillaZagrade (COI20_zagrade)C++20
100 / 100
256 ms5220 KiB
#include <iostream> #include <string> #include <algorithm> #include <iomanip> #include <vector> #include <map> #include <iterator> #include <set> #include <random> #include <unordered_map> #include <queue> #include <cassert> #include <stack> #include <numeric> #include <deque> using namespace std; typedef long long ll; typedef long double ld; const ll md1 = 1'000'000'000; const ll md2 = 998244353; const ll mdd = 666013; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t = 1; //cin >> t; while (t--) { int n, q; cin >> n >> q; string s(n, '.'); int p = -1; set<int> st; for (int i = 0; i < n; i++) { if (p == -1) { p = i; i++; } cout << "? " << p + 1 << " " << i + 1 << endl; int v; cin >> v; if (v == 1) { s[p] = '('; s[i] = ')'; if (st.empty()) p = -1; else { p = (*st.rbegin()); st.erase(prev(st.end())); } } else { st.insert(p); p = i; } } int k = 0; for (int i = 0; i < n; i++) if (s[i] == '.') k++; k /= 2; for (int i = 0; i < n; i++) if (s[i] == '.') { if (k) { k--; s[i] = ')'; } else s[i] = '('; } cout << "! " << s << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...