View on GitHub

coderbreakplus.github.io

Prev

#include<bits/stdc++.h>
using namespace std;
int n,c[1000010],they;
int use[1000010],a[1000010];
inline void doit(){
	for(int i=2;i<=n;i++)
		a[i]=c[i]^a[1];
}
int main(){
	cin>>n;
	for(int i=2;i<=n;i++){
		cout<<"XOR 1 "<<i<<endl;
		fflush(stdout);
		cin>>c[i];
	}
	for(int i=1;i<=n;i++){
		if(use[c[i]]){
			cout<<"AND "<<use[c[i]]<<" "<<i<<endl;
			fflush(stdout);
			cin>>they;
			a[1]=c[i]^they;
			doit();
			cout<<"! ";
			for(int i=1;i<=n;i++) cout<<a[i]<<" ";
			cout<<endl; return 0;
		}
		use[c[i]]=i;
	}
	int id1=0,id2=0,tmp,ans;
	for(int i=1;i<=n;i++)
		if(c[i]==1) id1=i;
		else if(c[i]==n-2) id2=i;
	cout<<"AND 1 "<<id1<<endl;
	fflush(stdout);
	cin>>tmp; ans=((tmp>>1)<<1);
	cout<<"AND 1 "<<id2<<endl;
	fflush(stdout);
	cin>>tmp; ans+=(tmp&1);
	a[1]=ans;
	doit(); cout<<"! ";
	for(int i=1;i<=n;i++) cout<<a[i]<<" ";
			cout<<endl; return 0;
}