Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define ll long long
- #define ul unsigned long long
- #define ld long double
- #define vll(v) vector<ll>v
- //#define vll(v,n) vector<ll>v(n);
- #define mll(m) map<ll,ll>m;
- #define sll(s) set<ll>s;
- #define iv(v) for(auto &i:v) cin >> i;
- #define ov(v) for(auto &i:v) cout << i << " ";
- #define Bismillah ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
- using namespace std;
- void solve() {
- ll n;
- cin >> n;
- vector<pair<ll,ll>>v(n);
- map<ll,set<ll>>m;
- map<ll,set<ll>>mm;
- multiset<ll>x;
- multiset<ll>y;
- for (auto &i:v) {
- cin >> i.first >> i.second;
- x.insert(i.first);
- y.insert(i.second);
- m[i.first].insert(i.second);
- mm[i.second].insert(i.first);
- }
- set<ll>s;
- ll ans=(*y.rbegin()-*y.begin()+1)*(*x.rbegin()-*x.begin()+1);
- s.insert(ans);
- //top left
- ll xx=*x.begin();
- ll yy=*m[xx].begin();
- if (true) {
- x.erase(x.find(xx));
- y.erase(y.find(yy));
- if (!x.empty()&& !y.empty()) {
- if ((*y.rbegin()-*y.begin()+1)*(*x.rbegin()-*x.begin()+1)<*s.begin()) {
- ans=(*y.rbegin()-*y.begin()+1)*(*x.rbegin()-*x.begin()+1);
- if ((*y.rbegin()-*y.begin()+1)*(*x.rbegin()-*x.begin()+1)<=n)
- ans+=min((*y.rbegin()-*y.begin()+1),(*x.rbegin()-*x.begin()+1));
- s.insert(ans);
- }
- }
- x.insert(xx);
- y.insert(yy);
- }
- //top right
- yy=*y.rbegin();
- xx=*mm[yy].begin();
- if (true) {
- x.erase(x.find(xx));
- y.erase(y.find(yy));
- if (!x.empty()&& !y.empty()) {
- if ((*y.rbegin()-*y.begin()+1)*(*x.rbegin()-*x.begin()+1)<*s.begin()) {
- ans=(*y.rbegin()-*y.begin()+1)*(*x.rbegin()-*x.begin()+1);
- if ((*y.rbegin()-*y.begin()+1)*(*x.rbegin()-*x.begin()+1)<=n)
- ans+=min((*y.rbegin()-*y.begin()+1),(*x.rbegin()-*x.begin()+1));
- s.insert(ans);
- }
- }
- x.insert(xx);
- y.insert(yy);
- }
- //bottom right
- xx=*x.rbegin();
- yy=*m[xx].rbegin();
- if (true) {
- x.erase(x.find(xx));
- y.erase(y.find(yy));
- if (!x.empty()&& !y.empty()) {
- if ((*y.rbegin()-*y.begin()+1)*(*x.rbegin()-*x.begin()+1)<*s.begin()) {
- ans=(*y.rbegin()-*y.begin()+1)*(*x.rbegin()-*x.begin()+1);
- if ((*y.rbegin()-*y.begin()+1)*(*x.rbegin()-*x.begin()+1)<=n)
- ans+=min((*y.rbegin()-*y.begin()+1),(*x.rbegin()-*x.begin()+1));
- s.insert(ans);
- }
- }
- x.insert(xx);
- y.insert(yy);
- }
- //bottom left
- yy=*y.begin();
- xx=*mm[yy].rbegin();
- if (true) {
- x.erase(x.find(xx));
- y.erase(y.find(yy));
- if (!x.empty()&& !y.empty()) {
- if ((*y.rbegin()-*y.begin()+1)*(*x.rbegin()-*x.begin()+1)<*s.begin()) {
- ans=(*y.rbegin()-*y.begin()+1)*(*x.rbegin()-*x.begin()+1);
- if ((*y.rbegin()-*y.begin()+1)*(*x.rbegin()-*x.begin()+1)<=n)
- ans+=min((*y.rbegin()-*y.begin()+1),(*x.rbegin()-*x.begin()+1));
- s.insert(ans);
- }
- }
- x.insert(xx);
- y.insert(yy);
- }
- cout << *s.begin() << endl;
- }
- int main() {
- Bismillah
- ll t=1;
- cin >> t;
- while (t--) {
- solve();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment