Tuesday, June 16, 2015

UVa 10161 - Ant on a Chessboard

// UVa 10161 - Ant on a Chessboard

#include <iostream>
#include <cmath>
using namespace std;

#define integer signed long long

int main() {
	integer t;
	while ((cin >> t) && t) {
		integer n = (integer) (ceil(sqrt(t)));
		integer prev = (n - 1) * (n - 1);
		if (n & 1) {
			//cout << "D: " << n << " is odd\n";
			integer x = n, y = 0;
			integer up = min(t - prev, n);
			y += up;
			integer left = 0;
			if (t - prev > up)
				left = t - prev - up;
			x -= left;
			cout << x << " " << y << endl;
		} else {
			//cout << "D: " << n << " is even\n";
			integer x = 0, y = n;
			integer right = min(t - prev, n);
			x += right;
			integer down = 0;
			if (t - prev > right)
				down = t - prev - right;
			y -= down;
			cout << x << " " << y << endl;
		}
	}
	return 0;
}

No comments:

Post a Comment