Submission #1223488

#TimeUsernameProblemLanguageResultExecution timeMemory
1223488iulia_morariuZagrade (COI20_zagrade)C++20
0 / 100
227 ms864 KiB
#include <algorithm> #include <iostream> #include <fstream> #include <climits> #include <vector> #include <stack> #include <cmath> #include <stack> // #include <bits/stdc++.h> #define in cin #define out cout using namespace std; string s; vector<int> rez; void explore(int p){ // p si p + 1 sunt () for(int i = p - 1; i > 0; i--){ if(s[i] != '.') break; if(s[i + 1] == '(' && rez[i] == 0) break; // nu mai chiar pot face ceva if(s[i + 1] == ')' && rez[i] == 0){ s[i] = ')'; continue; } if(s[i + 1] == ')' && rez[i] == 1){ s[i] = '('; continue; } } for(int i = p + 2; i < s.size(); i++){ if(s[i] != '.') break; if(s[i - 1] == ')' && rez[i] == 0) break; // nu mai chiar pot face ceva if(s[i - 1] == '(' && rez[i] == 0){ s[i] = '('; continue; } if(s[i - 1] == '(' && rez[i] == 1){ s[i] = ')'; continue; } } } void explore_final(int p){ for(int i = p - 1; i > 0; i--){ if(s[i] != '.') break; if(s[i + 1] == '(' && rez[i] == 0){ s[i] = '('; continue; } if(s[i + 1] == ')' && rez[i] == 0){ s[i] = ')'; continue; } if(s[i + 1] == ')' && rez[i] == 1){ s[i] = '('; continue; } } for(int i = p + 2; i < s.size(); i++){ if(s[i] != '.') break; if(s[i - 1] == ')' && rez[i] == 0){ s[i] = ')'; continue; } if(s[i - 1] == '(' && rez[i] == 0){ s[i] = '('; continue; } if(s[i - 1] == '(' && rez[i] == 1){ s[i] = ')'; continue; } } } signed main(){ int n, q; in >> n >> q; // ideea precedenta nu imi prindea cazuri de genu ))()(( -_- stack<int> st; st.push(0); s.resize(n); for(int i = 1; i < n; i++){ cout << "? " << st.top() + 1 << " " << i + 1 << endl; // ca gen s-o inchis totul dintre ele (teoretic) int x; in >> x; if(x == 1){ // yaay se inchid s[st.top()] = '('; s[i] = ')'; st.pop(); }else st.push(i); } // si e n - 1 pt ca fac cate 1 queri / i de la i la 1 la n - 1 int sz = st.size() / 2; // ce o ramas este ))..)(..(( while((int)st.size() > sz){ s[st.top()] = '('; st.pop(); } while(!st.empty()){ s[st.top()] = ')'; st.pop(); } out << "! " << s << '\n'; // rez.resize(n); // s.resize(n + 1); // bool are1 = 0; // for(int i = 1; i + 1 <= n; i++){ // s[i] = s[i + 1] = '.'; // cout << "? " << i << " " << i + 1 << endl; // in >> rez[i]; // if(rez[i] == 1) are1 = 1; // } // for(int i = 1; i + 1 <= n; i++){ // if(rez[i] == 1){ // s[i] = '('; s[i + 1] = ')'; // explore(i); // } // } // for(int i = 1; i <= n; i++){ // if(s[i] == '.') continue; // explore_final(i); // } // s.erase(s.begin()); // if(!are1){ // for(int i = 0; i < s.size() / 2; i++) s[i] = ')'; // for(int i = s.size() / 2; i < s.size(); i++) s[i] = '('; // } // cout << "! " << s << endl; 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...