結果
| 問題 | No.3759 Watch Fireworks |
| コンテスト | |
| ユーザー |
kyoprouno
|
| 提出日時 | 2026-10-03 02:17:08 |
| 言語 | C++23(gcc16) (gcc 16.1.0 + boost 1.92.0 + ACL) |
| 結果 |
WA
不安定
|
| 実行時間 | - |
| コード長 | 1,981 bytes |
| 記録 | |
| コンパイル時間 | 2,198 ms |
| コンパイル使用メモリ | 366,440 KB |
| 実行使用メモリ | 9,924 KB |
| 最終ジャッジ日時 | 2026-10-09 20:51:09 |
| 合計ジャッジ時間 | 6,083 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge5_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 28 WA * 19 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
template <class T, class U>
inline bool chmin(T &a, const U &b) { return a > b ? a = b, true : false; }
template <class T, class U>
inline bool chmax(T &a, const U &b) { return a < b ? a = b, true : false; }
const int inf = 1e9;
void main_() {
int n;
cin >> n;
vector<int> x(n), y(n);
int max_x = -inf, min_x = inf, max_y = -inf, min_y = inf;
for(int i = 0; i < n; i++){
cin >> x[i] >> y[i];
chmax(max_x,x[i]);
chmin(min_x,x[i]);
chmax(max_y,y[i]);
chmin(min_y,y[i]);
}
if(max_y - min_y > max_x - min_x)swap(x,y);
vector<pair<int,int>> p(n);
for(int i = 0; i < n; i++){
p[i].first = x[i] + y[i];
p[i].second = x[i] - y[i];
}
sort(p.begin(),p.end());
int le = -1, ri = p[n-1].first - p[0].first;
while(ri - le > 1){
int mid = (ri + le) / 2;
bool ex = false;
int y1 = p[0].second;
for(int i = 0; i < n; i++){
if(p[i].first <= p[0].first + mid)chmax(y1,p[i].second);
}
int max_qx = -inf, min_qx = inf, max_qy = -inf, min_qy = inf;
for(int i = 0; i < n; i++){
if(p[i].first > p[0].first + mid || (p[i].second < y1 - mid || p[i].second > y1)){
chmax(max_qx,p[i].first);
chmin(min_qx,p[i].first);
chmax(max_qy,p[i].second);
chmin(min_qy,p[i].second);
}
}
if(max_qx - min_qx <= mid && max_qy - min_qy <= mid)ex = true;
int y2 = p[0].second;
for(int i = 0; i < n; i++){
if(p[i].first <= p[0].first + mid)chmin(y1,p[i].second);
}
max_qx = -inf, min_qx = inf, max_qy = -inf, min_qy = inf;
for(int i = 0; i < n; i++){
if(p[i].first > p[0].first + mid || (p[i].second < y2 || p[i].second > y2 + mid)){
chmax(max_qx,p[i].first);
chmin(min_qx,p[i].first);
chmax(max_qy,p[i].second);
chmin(min_qy,p[i].second);
}
}
if(max_qx - min_qx <= mid && max_qy - min_qy <= mid)ex = true;
if(ex)ri = mid;
else le = mid;
}
cout << ri << endl;
};
int main() {
int t = 1;
// cin >> t;
while(t--) main_();
return 0;
}
kyoprouno