记录编号 |
233822 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[POJ1657] 棋盘上的距离 |
最终得分 |
100 |
用户昵称 |
liu_runda |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.002 s |
提交时间 |
2016-03-06 06:11:56 |
内存使用 |
0.29 MiB |
显示代码纯文本
#include<cstdio>
//#define abs(a) a>0?a:-a
int abs(int x){
return x>0?x:-x;
}
int min(int a,int b){
return a>b?b:a;
}
int main(){
freopen("poj_1657.in","r",stdin);
freopen("poj_1657.out","w",stdout);
int t;scanf("%d",&t);
char sa[4],sb[4];
int s1[4],s2[4];
while(t--){
scanf("%s %s",sa,sb);
s1[0]=sa[0]-'a';s2[0]=sb[0]-'a';
s1[1]=sa[1]-'0';s2[1]=sb[1]-'0';
if(s1[0]==s2[0]){
if(s1[1]==s2[1])printf("0 0 0 0\n");
else{
if((s1[1]-s2[1])%2==0)printf("%d 1 1 2\n",abs(s1[1]-s2[1]));
else printf("%d 1 1 Inf\n",abs(s1[1]-s2[1]));
}
}else if(s1[1]==s2[1]){
if((s1[0]-s2[0])%2==0)printf("%d 1 1 2\n",abs(s1[0]-s2[0]));
else printf("%d 1 1 Inf\n",abs(s1[0]-s2[0]));
}else{
int a=abs(s1[0]-s2[0]);
int b=abs(s1[1]-s2[1]);
if(a==b)printf("%d 1 2 1\n",a,a);
else{
if(abs(a+b)%2==0)printf("%d 2 2 2\n",min(a+abs(a-b),b+abs(a-b)));
else printf("%d 2 2 Inf\n",min(a+abs(a-b),b+abs(a-b)));
}
}
}
fclose(stdin);fclose(stdout);
return 0;
}