Submission #381419

#TimeUsernameProblemLanguageResultExecution timeMemory
381419VimmerZagrade (COI20_zagrade)C++14
71 / 100
989 ms17568 KiB
#include <bits/stdc++.h> //#include <ext/pb_ds/assoc_container.hpp> //#include <ext/pb_ds/tree_policy.hpp> //#pragma GCC optimize("-O3") //#pragma GCC optimize("unroll-loops") //#pragma GCC optimize("-Ofast") #define N 200500 #define NN 1005000 #define PB push_back //#define endl '\n' #define pri(x) cout << x << endl #define _ << " " << #define all(x) x.begin(), x.end() #define sz(x) int(x.size()) #define M ll(1e9 + 7) #define F first #define S second using namespace std; //using namespace __gnu_pbds; typedef long long ll; typedef long double ld; typedef short int si; typedef unsigned long long ull; //typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; //ordered_set se; void TL() { while (1) { } } int n, q; unordered_map <int, int> mp[N]; int ask(int l, int r) { if (mp[l].find(r) != mp[l].end()) return mp[l][r]; q--; if (q == -1) TL(); pri("?" _ l _ r); int x; cin >> x; mp[l][r] = x; return x; } char ans[N]; int ls[N], nx[N]; int main() { ios_base::sync_with_stdio(0); istream::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen("1.in", "r", stdin); cin >> n >> q; for (int i = 2; i <= n; i++) ls[i] = i - 1; nx[n] = ls[1] = -1; for (int i = 1; i < n; i++) nx[i] = i + 1; for (int i = 1; i <= n; i++) ans[i] = 'a'; int beg = 1; while (1) { while (beg <= n && ans[beg] != 'a') beg++; if (beg > n) break; int cur = beg; bool ft = 0; while (1) { int l = cur, r = nx[cur]; if (r == -1) break; if (ans[l] == 'a' && ans[r] == 'a' && ask(l, r)) { ans[l] = '('; ans[r] = ')'; int lst = ls[l]; int nxt = nx[r]; if (lst != -1) nx[lst] = nxt; if (nxt != -1) ls[nxt] = lst; ft = 1; if (lst != -1) { cur = lst; continue; } } cur = r; } if (!ft) { for (int i = 1; i <= n; i++) if (ans[i] == 'a') ans[i] = ')'; break; } } cout << "! "; for (int i = 1; i <= n; i++) cout << ans[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...