Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int n;
- pll a[1007];
- int solve()
- {
- scanf("%d", &n);
- if (!n)
- puts("YES\n0 0"), exit(0);
- forn(i, n)
- scanf("%lld %lld", &a[i].X, &a[i].Y);
- sort(a, a + n);
- forn(j, n)
- {
- ll S = a[j].X;
- ll A = a[j].Y;
- int f = 1;
- for (int i = 0; i <= j; ++i)
- {
- ll q = max(0ll, A - S + a[i].X);
- if (q != a[i].Y)
- f = 0;
- }
- for (int i = j + 1; i < n; ++i)
- {
- ll q = max(0ll, A + S - a[i].X);
- if (q != a[i].Y)
- f = 0;
- }
- if (f && abs(S) <= 1000000000 && A >= 0 && A <= 1000000000)
- {
- puts("YES");
- printf("%lld %lld", S, A);
- exit(0);
- }
- }
- for (int L = 0; L < n - 1; ++L)
- {
- ll A = a[L].Y + a[L + 1].Y - a[L].X + a[L + 1].X;
- if ((A & 1) == 0)
- {
- A /= 2;
- ll S = A - a[L].Y + a[L].X;
- if (a[L].X <= S && S <= a[L + 1].X)
- {
- int f = 1;
- for (int i = 0; i <= L; ++i)
- {
- ll q = max(0ll, A - S + a[i].X);
- if (q != a[i].Y)
- f = 0;
- }
- for (int i = L + 1; i < n; ++i)
- {
- ll q = max(0ll, A + S - a[i].X);
- if (q != a[i].Y)
- f = 0;
- }
- if (f && abs(S) <= 1000000000 && A >= 0 && A <= 1000000000)
- {
- puts("YES");
- printf("%lld %lld", S, A);
- exit(0);
- }
- }
- }
- }
- puts("NO");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement