做法显然,考虑到曼哈顿距离的性质,直接折半即可。考虑到奇数可能不能整除,用另一个奇数进行数字转移即可。
如果两个数字加起来为奇数,就明显只能输出"-1 -1"了。
值得考虑的是,如果0 0,怎么输出呢,答案是:也输出"0 0",而不是将此情况并到"-1 -1"中。
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int t;
scanf("%d",&t);
while(t--){
int a,b;
scanf("%d%d",&a,&b);
if((a+b)%2){
printf("-1 -1\n");
continue;
}
if(a%2)a--,b++;
if(b%2)a++,b--;
printf("%d %d\n",a/2,b/2);
}
return 0;
}