제출 #312580

#제출 시각아이디문제언어결과실행 시간메모리
312580LawlietZagrade (COI20_zagrade)C++17
100 / 100
1055 ms1340 KiB
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 100010;

int n, q;

string ans;

bool query(int L, int R)
{
	L++; R++;
	cout << "? " << L << " " << R << endl;

	int a;
	cin >> a;

	return a;
}

void answer()
{
	cout << "! " << ans << endl;
	exit(0);
}

int main()
{
	cin >> n >> q;

	ans.resize( n );
	vector<int> s( 1 , 0 );

	for(int i = 1 ; i < n ; i++)
	{
		if( query( s.back() , i ) )
		{
			ans[ s.back() ] = '(';
			ans[i] = ')';

			s.pop_back();
		}
		else s.push_back( i );
	}

	int qtd = (int)s.size(); qtd /= 2;

	for(int i = 0 ; i < qtd ; i++)
		ans[ s.back() ] = '(', s.pop_back();

	for(int i = 0 ; i < qtd ; i++)
		ans[ s.back() ] = ')', s.pop_back();

	answer();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...