BOJ 14488 - 준오는 급식충이야!!
모든 $N$에 대해 $[x_i - v_it_i, x_i+v_it_i]$ 가 겹치는지 확인해줌으로 써 풀 수 있다.
long double
을 써도 되는듯하고 $t_i$와 $x_i$에 $10,000$를 곱한 뒤 큰 수 연산으로 해도 된다.
void solve() {
int n;
double _t;
cin >> n >> _t;
bigint t = ll(_t * 10000);
vector<bigint> x(n), v(n);
fv(x);
fv(v);
bigint l = -1, r = 1;
for (int i = 1; i < 100; i++) l *= bigint(10);
for (int i = 1; i < 100; i++) r *= bigint(10);
for (int i = 0; i < n; i++) {
bigint cur_l = x[i] * 10000 - v[i] * t;
if (cur_l > l) l = cur_l;
bigint cur_R = x[i] * 10000 + v[i] * t;
if (cur_R < r) r = cur_R;
}
if (l <= r) cout << 1;
else cout << 0;
}
Comments