Submission #381357

#TimeUsernameProblemLanguageResultExecution timeMemory
381357VimmerZagrade (COI20_zagrade)C++14
0 / 100
3069 ms364 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 100500 #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; int ask(int l, int r) { pri("?" _ l _ r); int x; cin >> x; return x; } int nx[N], ls[N]; char ans[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); int n, q; 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 kl = n, beg = 1; while (kl) { while (ans[beg] != 'a') beg++; int cur = beg; 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; cur = nxt; kl -= 2; } else cur = r; } } 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...