El significado de los problemas
decir
relaciones de tamaño.
,
está dada por ellos mismos, encontrar
,
solución del problema
A juzgar por mayor a menor, al parecer, al menos a
Ge, tenía que mantener el tamaño de la detrás de relación.
Si elige
,
;
,
;
simplemente
y
tiempo, se puede determinar directamente, y debido a que es igual, la relación magnitud sin cambios.
en
, y
el tiempo, no se puede determinar directamente, después de determinar la relación de magnitud por el anterior, ya que es igual a un OR exclusivo valor, la relación magnitud que se almacena directamente detrás de la relación magnitud.
#include<bits/stdc++.h>
#define FOR(i,l,r) for(int i=l;i<=r;i++)
#define sf(x) scanf("%d",&x)
#define inf 1e18
using namespace std;
typedef long long ll;
const int maxn = 405000;
int n,A[maxn];
int query(int x,int y){
cout<<"? "<<x<<" "<<y<<endl;
cout.flush();
int val;cin>>val;
return val;
}
int main(){
int a=0,b=0,big=query(a,b);
for(int i=29;i>=0;i--){
int l=query(a^(1<<i),b),r=query(a,b^(1<<i));
if(l==r){
if(big==1)a^=(1<<i);
else if(big==-1)b^=(1<<i);
big=l;
}
else if(l==-1){
a^=(1<<i);
b^=(1<<i);
}
}
cout<<"!"<<" "<<a<<" "<<b<<endl;
}