Submission #1003738

#TimeUsernameProblemLanguageResultExecution timeMemory
1003738vjudge1Zagrade (COI20_zagrade)C++17
100 / 100
622 ms1124 KiB
#include<bits/stdc++.h> #define endl '\n' using namespace std; const int N = 100010; struct LinkedList{ int lt[N], rt[N]; LinkedList(int n){ for(int i = 1;i <= n;i++){ lt[i] = i-1; rt[i] = i+1; } } void remove(int x){ int l = lt[x], r = rt[x]; rt[l] = r; lt[r] = l; return; } int left(int n){ return lt[n]; } int right(int n){ return rt[n]; } }; char res[N]; int main(){ int n, q; cin >> n >> q; LinkedList v(n); int qtd0 = 0, qtd1 = 0; for(int i = 1;i <= n;i++){ res[i] = '0'; } for(int i = 2;i <= n;i++){ int l = v.left(i); if(l == 0) continue; cout << "? " << l << ' ' << i << endl; cout << flush; int x; cin >> x; if(x == 1){ v.remove(l); v.remove(i); res[l] = '('; res[i] = ')'; qtd0++; qtd1++; } } qtd0 = n/2-qtd0; qtd1 = n/2-qtd1; for(int i = 1;i <= n;i++){ if(res[i] == '0'){ if(qtd1){ qtd1--; res[i] = ')'; } else{ qtd0--; res[i] = '('; } } } cout << "! "; for(int i = 1;i <= n;i++){ cout << res[i]; } cout << endl << flush; 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...