Uva : 10812 -- Beat The Spread!

Problem Link

/*------------------------------------------------*/
//Problem Setter: Gordon V. Cormack
//Uva Problem No: 11812
//Problem Name : Beat The Spread!
//Author : Shohanur Rahaman
//University : City University
//E-mail : shohan4556@gmail.com
//Problem Type : Math
/*-----------------------------------------------*/
#include<stdio.h>
int main()
{
int t,i,s,d,a,b;
while(scanf("%d",&t)==1){
for(i=0;i<t;i++){
scanf("%d %d",&s,&d);
if(s>=d && (s+d)%2==0){
a=(s+d)/2;
b=(s-d)/2;
printf("%d %d\n",a,b);
}
else
printf("impossible\n");
}
}
return 0;
}

সমস্যাটি সল্ভ করতে গিয়ে আমি যথেষ্ট পরিমাণ মজা পাইসি :D। প্রবলেমটির key word লেখা আসে একবারে লাস্টে। 
এখানে দুইটি কন্ডিশনকে Terminate করতে হবে প্রথমত, final scores must be non negative এবং দ্বিতীয়ত, পূর্ণ সংখ্যা হতে হবে।
প্রথম শর্তের জন্য (s>b) তাহলেই a=(s+d)/2 and b=(s-d)/2 positive হবে। 
অপর শর্তের জন্য, a and b দশমিক সংখ্যা হবে যখন   a and b এর মধ্যে একটি even and another must be odd number হবে। এজন্য (s+d)/2 কারন, দুটি বিজোড় সংখ্যার যোগফল সব সময় একটি জোড় সংখ্যা।

আমি মনে হয় ভালোভাবে গুছিয়ে লিখতে পারি নাই প্রবলেমটা ভালো মত পড়লেই পুরো বিষয়টা পরিষ্কার হয়ে যাবে।