답안 #651091

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
651091 2022-10-17T03:15:44 Z _HDH Zagrade (COI20_zagrade) C++11
100 / 100
902 ms 836 KB
#include <bits/stdc++.h>

#ifdef LOCAL
#include <debug.h>
#else
#define debug(...) 1001
#endif

using namespace std;
#define all(x) x.begin(), x.end()
#define st first
#define nd second
#define lb lower_bound
#define ub upper_bound
#define sz(x) (int)x.size()
#define pb push_back
#define pob pop_back
#define pf push_front
#define pof pop_front
#define file "TEMPLATE"

typedef long long ll;
typedef pair<int, int> ii;
typedef array<int, 3> iii;
typedef vector<int> vi;
typedef vector<ll> vl;

bool const SINGLE_TEST = 1;

bool ask(int l, int r){
	cout << "? " << l << " " << r << "\n";
	cout.flush();
	bool ans; cin >> ans;
	return ans;
}

void answer(string s){
	cout << "!" << s << "\n";
	cout.flush();
}

void solve(){
	int n, q; 
	scanf("%d%d", &n, &q);
	
	string s(n + 1, ' ');
	stack<int> st;
	for (int i = 1; i <= n; i++){
		if (!st.empty() && ask(st.top(), i)){
			s[st.top()] = '(';
			s[i] = ')';
			st.pop();
		}else st.push(i);
	}
	
	int z = st.size() / 2;
	while (!st.empty()){
		if (st.size() <= z) s[st.top()] = ')';
		else s[st.top()] = '(';
		st.pop();
	}
	// for (int i = 1; i <= n / 2; i++)
		// s[i] = '(';
	// for (int i = n / 2 + 1; i <= n; i++)
		// s[i] = ')';
	answer(s);
}

int main(){
	ios_base::sync_with_stdio(0);//      the
	cin.tie(0);cout.tie(0);// 	    magical lines	
	// freopen(file".inp", "r", stdin);
	// freopen(file".out", "w", stdout);
	int t;
	if (SINGLE_TEST) t = 1;
	else cin >> t;
	while (t--) solve();
	return 0;
}//it's coding time!

Compilation message

zagrade.cpp: In function 'void solve()':
zagrade.cpp:58:17: warning: comparison of integer expressions of different signedness: 'std::stack<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   58 |   if (st.size() <= z) s[st.top()] = ')';
      |                 ^
zagrade.cpp:44:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   44 |  scanf("%d%d", &n, &q);
      |  ~~~~~^~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 6 ms 316 KB Output is correct
3 Correct 10 ms 320 KB Output is correct
4 Correct 11 ms 208 KB Output is correct
5 Correct 11 ms 208 KB Output is correct
6 Correct 11 ms 316 KB Output is correct
7 Correct 5 ms 208 KB Output is correct
8 Correct 9 ms 316 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 8 ms 324 KB Output is correct
3 Correct 8 ms 208 KB Output is correct
4 Correct 8 ms 320 KB Output is correct
5 Correct 10 ms 208 KB Output is correct
6 Correct 14 ms 208 KB Output is correct
7 Correct 10 ms 208 KB Output is correct
8 Correct 9 ms 324 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 372 ms 528 KB Output is correct
3 Correct 737 ms 528 KB Output is correct
4 Correct 829 ms 532 KB Output is correct
5 Correct 772 ms 524 KB Output is correct
6 Correct 864 ms 528 KB Output is correct
7 Correct 769 ms 764 KB Output is correct
8 Correct 487 ms 532 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 208 KB Output is correct
2 Correct 715 ms 836 KB Output is correct
3 Correct 759 ms 720 KB Output is correct
4 Correct 774 ms 756 KB Output is correct
5 Correct 902 ms 724 KB Output is correct
6 Correct 639 ms 836 KB Output is correct
7 Correct 759 ms 612 KB Output is correct
8 Correct 689 ms 524 KB Output is correct