結果
| 問題 |
No.180 美しいWhitespace (2)
|
| ユーザー |
minami
|
| 提出日時 | 2019-03-28 02:51:39 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,589 bytes |
| コンパイル時間 | 1,589 ms |
| コンパイル使用メモリ | 169,332 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-11 19:04:17 |
| 合計ジャッジ時間 | 3,020 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 24 WA * 7 |
ソースコード
#include "bits/stdc++.h"
using namespace std;
#ifdef _DEBUG
#include "dump.hpp"
#else
#define dump(...)
#endif
#define int long long
#define rep(i,a,b) for(int i=(a);i<(b);i++)
#define rrep(i,a,b) for(int i=(b)-1;i>=(a);i--)
#define all(c) begin(c),end(c)
const int INF = sizeof(int) == sizeof(long long) ? 0x3f3f3f3f3f3f3f3fLL : 0x3f3f3f3f;
const int MOD = 1'000'000'007;
template<class T> bool chmax(T &a, const T &b) { if (a < b) { a = b; return true; } return false; }
template<class T> bool chmin(T &a, const T &b) { if (b < a) { a = b; return true; } return false; }
signed main() {
cin.tie(0);
ios::sync_with_stdio(false);
int N; cin >> N;
vector<int> a(N), b(N); rep(i, 0, N) {
cin >> a[i] >> b[i];
}
// 三分探索
auto f = [&](double x) {
double maxi = -INF, mini = INF;
rep(i, 0, N) {
chmax(maxi, a[i] + b[i] * x);
chmin(mini, a[i] + b[i] * x);
}
return maxi - mini;
};
auto ternarySearch = [&](double l, double r) {
for (int i = 0; i < 1000; i++) {
double m1 = l + (r - l) / 3, m2 = r - (r - l) / 3;
// min 下に凸 : f(m1) > f(m2)
// max 上に凸 : f(m1) < f(m2)
if (f(m1) > f(m2)) {
l = m1;
}
else {
r = m2;
}
}
return r;
};
double x = ternarySearch(0, INF);
auto g = [&](int x) {
int maxi = -INF, mini = INF;
rep(i, 0, N) {
chmax(maxi, a[i] + b[i] * x);
chmin(mini, a[i] + b[i] * x);
}
return maxi - mini;
};
dump(x);
int mini = INF;
int ans = -1;
rep(i, max((int)(x - 1), 1LL), max((int)(x + 2), 2LL)) {
if (chmin(mini, g(i))) {
ans = i;
}
}
cout << ans << endl;
return 0;
}
minami