Submission #641964

#TimeUsernameProblemLanguageResultExecution timeMemory
641964andecaandeciZagrade (COI20_zagrade)C++17
100 / 100
886 ms708 KiB
#include <bits/stdc++.h> using namespace std; int n, q; char arr[100005]; int ask(int l, int r) { cout << "? " << l << " " << r << endl; int ret; cin >> ret; return ret; } int main() { cin >> n >> q; int sz = -1; for(int i =1 ; i <= n;i++) { arr[i] = '.'; } vector<pair<int, int> > v; int l = 1, r = 2; while(r <= n) { int ret = ask(l, r); if (ret) { arr[l] = '('; arr[r] = ')'; // if (sz >= 0) { // cout << v[sz].second << " " << l << endl; // } while (sz >= 0 && v[sz].second >= l - 1) { // cout << v[sz].second << " " << l - 1 << endl; // cout << v[sz].first << " " << v[sz].second << endl; l = min(l, v[sz].first); r = max(r, v[sz].second); v.pop_back(); sz--; } // cout << ":: v nya ::" << endl; // for(int j = 0; j < v.size(); j++) { // cout << v[j].first << " " << v[j].second << " "; // } // cout << "l r" << endl; // cout << l << " " << r << endl; sz++; v.push_back(make_pair(l, r)); // cout << "::" << v.size() << endl; if (sz >= 1) { r++; l--; } else if(l > 1) { r++; l--; } else { r+=2; l = r - 1; } } else { r++; l = r - 1; } } int tot = 0; for(int i = 1; i <= n; i++) { if (arr[i] == '.') { tot++; } } tot /= 2; cout << "! "; int cnt = 0; for(int i = 1; i <= n; i++) { if (arr[i] == '.') { if (cnt < tot) { cout << ')'; } else { cout << '('; } cnt++; continue; } cout << arr[i]; } cout << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...