제출 #1345341

#제출 시각아이디문제언어결과실행 시간메모리
1345341ThylOneTower (BOI25_tow)C++17
0 / 100
6083 ms344 KiB
//####################
//Tower
//####################
#include<bits/stdc++.h> 


#define pb push_back
#define eb emplace_back
#define rall(x) x.rbegin(), x.rend()
#define all(x) x.begin(), x.end()
 
using namespace std;
vector<pair<int,int>> query(int x, int y , int z){
	cout <<"? "<<x<<' '<<y<<' ' <<z<<endl;
	int r;cin>>r;
	vector<pair<int,int>> re;
	for(int i = 0 ; i < r ; i++){
		int a,b;cin>>a>>b;
		re.emplace_back(a,b);
	}
	return re;
}
void answer(vector<int> ans){
	cout <<"! ";
	for(int u:ans)cout <<u<<" ";
	cout << endl;
}


signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n;cin>>n;

	if(n==3){
		answer({0,1,2});
	}else{
		pair<int,int> farr = {0,1};
		for(int i = 2; i < n ; i++){
			farr = query(farr.first, farr.second,i)[0];
		}
		vector<int> ans = {farr.first, farr.second};
		set<int> S;
		S.insert(ans[0]);
		S.insert(ans[1]);

		while(ans.size()!=n){
			
			for(int x = 0 ; x < n ; x++){
				if(S.count(x)==0){
					if(query(ans[ans.size()-1], ans[ans.size()-2],x).size()==2){
						S.insert(x);
						ans.emplace_back(x);
						break;
					}
				}
			}
		}
		answer(ans);
	}
	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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...