做法显然,考虑到曼哈顿距离的性质,直接折半即可。考虑到奇数可能不能整除,用另一个奇数进行数字转移即可。

如果两个数字加起来为奇数,就明显只能输出"-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;
}