Submission #712496

#TimeUsernameProblemLanguageResultExecution timeMemory
712496noeditZagrade (COI20_zagrade)C++17
71 / 100
891 ms1400 KiB
#include <bits/stdc++.h> //#include <quadmath.h> //#include <ext/pb_ds/assoc_container.hpp> //#include <ext/pb_ds/tree_policy.hpp> //#define sz(x) (int)x.size() //#define sqr(x) x*x //#pragma GCC optimize("-O3") //#pragma GCC optimize("Ofast") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,sse4.1,sse4.2,popcnt,abm,mmx,avx,avx2,tune=native") #pragma GCC optimize("unroll-loops") //#pragma GCC optimize("no-stack-protector") #pragma GCC optimize("fast-math") using namespace std; //using namespace __gnu_pbds; #define int long long //#define ld long double //template <class T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; typedef long long ll; bool ask(int l, int r) { cout << "? " << l << " " << r << endl; int b; cin >> b; return b; } const int MAXN = 1e5 + 10; bool check[MAXN]; char ans[MAXN]; int lt[MAXN], rt[MAXN]; void solve() { int n, k; cin >> n >> k; stack<int> st; fill(ans, ans + n + 1, '#'); for (int i = 1; i <= n; i++) { if (st.empty()) { st.push(i); } else { int res = ask(st.top(), i); if (res) { ans[st.top()] = '('; ans[i] = ')'; st.pop(); } else { st.push(i); } } } int cnt = 0; for (int i = 1; i <= n; i++) { if (ans[i] == '#') { if (cnt < n / 2) ans[i] = ')', cnt++; else ans[i] = '('; } } cout << "! "; for (int i = 1; i <= n; i++) cout << ans[i]; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t; t = 1; //cin >> t; while (t--) { solve(); } return 0; } /* 4 2 4 3 1 1 10 9 2 2 4 7 2 5 7 4 1 8 10 5 3 5 6 5 9 1 10 */ /* 2 1 3 1 1 1 4 1 1 2 6 1 3 1 5 1 7 */ /* 1 1 1 100000000 1 1 1 1 1 */ /* 4 4 1 2 1 3 1 1 1 2 1 3 1 4 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...