uva808

来源:互联网 发布:linux git clone 编辑:程序博客网 时间:2024/05/22 13:31
/**********author:chanjun2016email:15755396353@163.com***********/#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <vector>#include <string>#include <map>#include <set>#include <algorithm>using namespace std;#define INF = 0x3f3f3f3fconst int maxn = 2e4;struct Point{int x,y;Point(){};Point(int a,int b){x = a;y = b;}};Point f[maxn + 10];int num;int d[][2] ={-1,0, -1,1, 0,1, 1,0, 1,-1, 0,-1};void gen(int dir,int l){++num;//printf("%d\n", num);while (l--){f[num] = Point(f[num - 1].x + d[dir][0], f[num - 1].y + d[dir][1]);++num;}--num;}void init(){ num = 2;f[1] = Point(0,0);f[2] = Point(1,-1);for (int i = 1; i <= 60; ++i){for (int j = 0; j < 4; ++j){gen(j,i);}gen(4,i + 1);gen(5,i);}}int main(){init();int a,b;while (scanf("%d%d",&a,&b),a + b > 0){int x = f[a].x - f[b].x;int y = f[a].y - f[b].y;int ans;if (x * y <= 0){ans = max(abs(x),abs(y));}else{ans = abs(x) + abs(y);}//printf("%d %d\n",f[b].x,f[b].y);printf("The distance between cells %d and %d is %d.\n", a,b,ans);}return 0;}

0 0
原创粉丝点击