Skip to content

Commit 646ac51

Browse files
authored
[20251006] BOJ / G3 / 두 직사각형 / 권혁준
1 parent 0301960 commit 646ac51

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
```cpp
2+
#include <bits/stdc++.h>
3+
using namespace std;
4+
using ll = long long;
5+
6+
int T, N;
7+
vector<pair<ll, ll>> v;
8+
vector<ll> L, R;
9+
10+
int main(){
11+
cin.tie(0)->sync_with_stdio(0);
12+
13+
for(cin>>T;T--;) {
14+
cin>>N;
15+
v = vector<pair<ll, ll>>(N);
16+
for(auto &[a,b]:v) cin>>a>>b;
17+
if(N == 1) {
18+
cout<<"0\n";
19+
continue;
20+
}
21+
22+
sort(v.begin(), v.end());
23+
24+
L = vector<ll>(N);
25+
ll mx = v[0].second, mn = v[0].second;
26+
for(int i=0;i<N;i++) {
27+
mx = max(mx, v[i].second);
28+
mn = min(mn, v[i].second);
29+
L[i] = (v[i].first-v[0].first) * (mx-mn);
30+
}
31+
32+
R = vector<ll>(N);
33+
mx = v[N-1].second, mn = v[N-1].second;
34+
for(int i=N-1;i>=0;i--) {
35+
mx = max(mx, v[i].second);
36+
mn = min(mn, v[i].second);
37+
R[i] = (v[N-1].first-v[i].first) * (mx-mn);
38+
}
39+
40+
ll ans = 1e18;
41+
for(int i=1;i<N;i++) ans = min(ans, max(L[i-1], R[i]));
42+
43+
sort(v.begin(), v.end(), [](auto a, auto b) -> bool {
44+
return a.second == b.second ? a.first < b.first : a.second < b.second;
45+
});
46+
47+
L = vector<ll>(N);
48+
mx = v[0].first, mn = v[0].first;
49+
for(int i=0;i<N;i++) {
50+
mx = max(mx, v[i].first);
51+
mn = min(mn, v[i].first);
52+
L[i] = (v[i].second-v[0].second) * (mx-mn);
53+
}
54+
55+
R = vector<ll>(N);
56+
mx = v[N-1].first, mn = v[N-1].first;
57+
for(int i=N-1;i>=0;i--) {
58+
mx = max(mx, v[i].first);
59+
mn = min(mn, v[i].first);
60+
R[i] = (v[N-1].second-v[i].second) * (mx-mn);
61+
}
62+
63+
for(int i=1;i<N;i++) ans = min(ans, max(L[i-1], R[i]));
64+
cout<<ans<<'\n';
65+
}
66+
67+
}
68+
```

0 commit comments

Comments
 (0)