Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #pragma comment(linker, "/STACK:256000000")
- #include <bits/stdc++.h>
- using namespace std;
- typedef unsigned long long ull;
- typedef long long ll;
- typedef pair<int, int> pii;
- typedef vector<int> vi;
- typedef pair<string, int> psi;
- typedef vector<string> vs;
- typedef pair<ll, ll> pll;
- typedef vector<ll> vll;
- typedef vector<char> vc;
- typedef vector<pii> vpii;
- typedef vector<pair<ll, ll> > vpll;
- typedef long double ld;
- #define forn(i, n) for (int i = 0; i < (int)n; i++)
- #define for1(i, n) for (int i = 1; i <= (int)n; i++)
- #define forq(i, s, t) for (int i = s; i <= t; i++)
- #define ford(i, s, t) for (int i = s; i >= t; i--)
- #define mk make_pair
- #define inb push_back
- #define outb pop_back
- #define all(v) v.begin(), v.end()
- #define X first
- #define Y second
- #define TIME clock() * 1.0 / CLOCKS_PER_SEC
- #define sqr(x) (x) * (x)
- #define y1 amdknkgsdaasdwapgnpikn
- //
- #define mp make_pair
- #define pb push_back
- #define XX first
- #define YY second
- //
- const ld EPS = 1e-9;
- const ld pi = acos(-1.0);
- const int MAXN = (int)1e5 + 7;
- const int INF = (int)2e9;
- const ll LINF = (ll)7e18;
- const ll MOD = (ll)1e9 + 7;
- const int CHASH = (ll)239017;
- const ld DINF = (ld)1000000000000000.0;
- int n, d;
- pii a[MAXN];
- int solve()
- {
- scanf("%d %d", &n, &d);
- forn(i, n)
- scanf("%d %d", &a[i].X, &a[i].Y);
- sort(a, a + n);
- set<pii> q;
- ll ans = 0;
- int r = 1;
- forn(i, n)
- {
- q.erase(mk(a[i].Y, i));
- while (r < n && a[i].X + d < a[r].X)
- {
- q.insert(a[r]);
- ++r;
- }
- --r;
- set<pii>::iterator itl = q.upper_bound(mk(a[i].Y - d, INF));
- set<pii>::iterator ritr = q.lower_bound(mk(a[i].Y + d, -1));
- ++ritr;
- pii lt = (*itl);
- if (ritr == q.begin())
- continue;
- --ritr;
- pii rt = (*ritr);
- if (lt.Y != rt.Y && lt.X > a[i].Y - d && lt.X < a[i].Y + d && rt.X > a[i].Y - d && rt.X < a[i].Y + d)
- puts("-1"), exit(0);
- if (rt.X > a[i].Y - d && rt.X < a[i].Y + d)
- {
- if (ans)
- puts("-1"), exit(0);
- pii Q = a[rt.Y];
- ans = abs(Q.X - a[i].X) * abs(Q.Y - a[i].Y);
- }
- else
- {
- if (lt.X > a[i].Y - d && lt.X < a[i].Y + d)
- {
- if (ans)
- puts("-1"), exit(0);
- pii Q = a[lt.Y];
- ans = abs(Q.X - a[i].X) * abs(Q.Y - a[i].Y);
- }
- }
- }
- printf("%lld", ans);
- return 0;
- }
- int main()
- {
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment