思路:当s<d,或者s与d相加不为偶数(如果相加为奇数,整除2会产生小数)时不同时输出impossible;否则按照从大到小的顺序输出;
代码如下:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
int x1,x2;
int y1,y2;
int s,d;
int n;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&s,&d);
x1=(s+d)/2;
y1=s-x1;
x2=(s-d)/2;
y2=s-x2;
if((s+d)%2!=0)
{
printf("impossible\n");
continue;
}
if(x1<0 || x2<0)
printf("impossible\n");
else
{
if(x1>=x2 )
printf("%d %d\n",x1,y1);
else
printf("%d %d\n",x2,y2);
}
}
return 0;
}