BOJ 14488 - 준오는 급식충이야!!

image.png

모든 $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;
}

Tags:

Categories:

Updated:

Comments