Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct w
- {
- ll a, b, c;
- };
- vector<w> getlen(ll x)
- {
- vector<w> ans;
- for (ll y = x; y >= 0; y--) {
- ll z = x*x - y*y;
- ll q = (ll)sqrt(z*1.);
- if (q*q == z)
- ans.push_back(w{y, q, x});
- }
- return ans;
- }
- int main()
- {
- #ifdef _DEBUG
- freopen("input.txt", "rt", stdin);
- freopen("output.txt", "wt", stdout);
- //#else
- // freopen(name".in", "rt", stdin);
- // freopen(name".out", "wt", stdout);
- #endif
- ll a, b, c;
- cin >> a >> b >> c;
- auto q1 = getlen(a);
- auto q2 = getlen(b);
- vector<pii> p = { {1, 1}, {-1, 1}, {1, -1}, {-1, -1} };
- for (w tr1 : q1) {
- for (w tr2 : q2) {
- for (int i = 0; i < 4; i++)
- for (int j = 0; j < 4; j++) {
- ll x1 = tr1.a * p[i].X;
- ll y1 = tr1.b * p[i].Y;
- ll x2 = tr2.a * p[j].X;
- ll y2 = tr2.b * p[j].Y;
- if ((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1) == c*c) {
- printf("%lld %lld\n", x1, y1);
- printf("%lld %lld\n", x2, y2);
- printf("0 0");
- return 0;
- }
- }
- }
- }
- printf("-1");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement