結果
| 問題 |
No.180 美しいWhitespace (2)
|
| ユーザー |
izuru_matsuura
|
| 提出日時 | 2016-09-22 21:35:34 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,819 bytes |
| コンパイル時間 | 1,930 ms |
| コンパイル使用メモリ | 171,580 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-11-17 13:13:22 |
| 合計ジャッジ時間 | 14,604 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 20 WA * 11 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
namespace {
typedef double real;
typedef long long ll;
template<class T> ostream& operator<<(ostream& os, const vector<T>& vs) {
if (vs.empty()) return os << "[]";
auto i = vs.begin();
os << "[" << *i;
for (++i; i != vs.end(); ++i) os << " " << *i;
return os << "]";
}
template<class T> istream& operator>>(istream& is, vector<T>& vs) {
for (auto it = vs.begin(); it != vs.end(); it++) is >> *it;
return is;
}
const ll INF = 1LL<<56;
int N;
vector<ll> A, B;
void input() {
cin >> N;
A.resize(N);
B.resize(N);
for (int i = 0; i < N; i++) {
cin >> A[i] >> B[i];
}
}
ll C(ll x) {
ll m = INF;
ll M = 0;
for (int i = 0; i < N; i++) {
m = min(m, A[i] + B[i] * x);
M = max(M, A[i] + B[i] * x);
}
//cout << x << " -> " << M - m << endl;
return M - m;
}
void solve() {
if (N == 1) {
cout << 0 << endl;
return;
}
ll len = C(1);
int t = 1;
for (int i = 0; i < N; i++) {
for (int j = i + 1; j < N; j++) {
if (B[i] == B[j]) continue;
real x = - (A[i] - A[j]) / real(B[i] - B[j]);
if (x <= 0) continue;
ll p = C(ll(floor(x)));
if (len > p) {
len = p;
t = floor(x);
}
ll q = C(ll(ceil(x)));
if (len > q) {
len = q;
t = ceil(x);
}
}
}
cout << t << endl;
}
}
int main() {
input(); solve();
return 0;
}
izuru_matsuura