赛时一直 T,然后知道主流做法也没什么区别
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
template<typename T>inline T read(){
T a=0;bool s=0;
char ch=getchar();
while(ch>'9' || ch<'0'){
if(ch=='-')s^=1;
ch=getchar();
}
while(ch>='0' && ch<='9'){
a=(a<<3)+(a<<1)+(ch^48);
ch=getchar();
}
return s?-a:a;
}
#define F(x) x.first
#define S(x) x.second
const ll mn=2e5+10;
ll t,n,k,mx,my,mmx,mmy;
int main(){
t=read<ll>();
for(ll cas=1;cas<=t;cas++){
n=read<ll>();
mx=my=mmx=-1e10;
mmy=1e10;
for(ll i=1;i<=n;i++){
ll x=read<ll>(),y=read<ll>();
if(x+y>mx+my)mx=x,my=y;
if(x+y>mmx-mmy)mmx=x,mmy=y;
}
for(ll i=1;i<=2;i++){
puts("? U 1000000000");
fflush(stdout);
read<ll>();
}
puts("? R 1000000000");
fflush(stdout);
read<ll>();
puts("? R 1000000000");
fflush(stdout);
ll a=read<ll>();
for(ll i=1;i<=3;i++){
puts("? D 1000000000");
fflush(stdout);
read<ll>();
}
puts("? D 1000000000");
fflush(stdout);
ll b=read<ll>();
a+=mx+my;b+=mmx-mmy;
printf("! %d %d\n",(a+b)/2-4000000000ll,(a-b)/2);
fflush(stdout);
}
return 0;
}