狗狗40题搞完纪念 » 1025

1025
1025.cpp


#include <cstdio>
#include <algorithm>

using namespace std;

int ans;

inline int sqr(int x) {
	return x * x;
}

void gao(int dx, int dy, int x0, int y0, int xx, int yy, int zz, int x, int y, int z) {
	if (zz == 0) {
		ans = min(ans, sqr(xx - x0) + sqr(yy - y0));
	} else {
		if (-2 < dx && dx <= 0) {
			gao(dx - 1, dy, x0 + z, y0, z - zz, yy, xx, z, y, x);
		}
		if (0 <= dx && dx < 2) {
			gao(dx + 1, dy, x0 - x, y0, zz, yy, x - xx, z, y, x);
		}
		if (-2 < dy && dy <= 0) {
			gao(dx, dy - 1, x0, y0 + z, xx, z - zz, yy, x, z, y);
		}
		if (0 <= dy && dy < 2) {
			gao(dx, dy + 1, x0, y0 - y, xx, zz, y - yy, x, z, y);
		}
	}
}

int main() {
	int x, y, z, x0, y0, z0, xx, yy, zz;

	while (scanf("%d%d%d%d%d%d%d%d%d", &x, &y, &z, &x0, &y0, &z0, &xx, &yy, &zz) != EOF) {
		ans = 0x77777777;
		if (z0 != 0 && z0 != z) {
			if (x0 == 0 || x0 == x) {
				swap(x, z);
				swap(x0, z0);
				swap(xx, zz);
			} else {
				swap(y, z);
				swap(y0, z0);
				swap(yy, zz);
			}
		}
		if (z0 != 0) {
			z0 = z - z0;
			zz = z - zz;
		}
		gao(0, 0, x0, y0, xx, yy, zz, x, y, z);
		printf("%d\n", ans);
	}

	return 0;
}

//Run ID  	Submit Time  	Judge Status  	Problem ID  	Language  	Run Time(ms)  	Run Memory(KB)  	User Name  	Admin
//365 	2010-07-05 23:17:26 	Accepted 	1025 	C++ 	0 	180 	anotherpeg 	Source
Leave a Reply