結果
問題 | No.2564 衝突予測 |
ユーザー |
![]() |
提出日時 | 2023-12-02 15:46:16 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 403 ms / 2,000 ms |
コード長 | 973 bytes |
コンパイル時間 | 2,019 ms |
コンパイル使用メモリ | 192,136 KB |
最終ジャッジ日時 | 2025-02-18 04:55:24 |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 9 |
ソースコード
#include<bits/stdc++.h>using namespace std;int main() {int TE;cin >> TE;int dx[] = {-1, 1, 0, 0};int dy[] = {0, 0, 1, -1};int A[256];A['L'] = 0;A['R'] = 1;A['U'] = 2;A['D'] = 3;auto f = [&](long x, long X1, long Y1, char D1, long X2, long Y2, char D2) -> long {long a = X1, b = Y1, c = X2, d = Y2;a += x * dx[A[D1]];b += x * dy[A[D1]];c += x * dx[A[D2]];d += x * dy[A[D2]];return abs(a - c) + abs(b - d);};while (TE--) {long X1, Y1, X2, Y2;char D1, D2;cin >> X1 >> Y1 >> D1 >> X2 >> Y2 >> D2;X1 *= 2;Y1 *= 2;X2 *= 2;Y2 *= 2;long lo = 1, hi = 1e11;while (hi - lo > 10) {long mid1 = (lo + lo + hi) / 3;long mid2 = (lo + hi + hi) / 3;if (f(mid1, X1, Y1, D1, X2 ,Y2, D2) > f(mid2, X1, Y1, D1, X2, Y2, D2)) lo = mid1;else hi = mid2;}bool ans = false;for (long i = lo; i <= hi; ++i) {ans = ans || !f(i, X1, Y1, D1, X2, Y2, D2);}cout << (ans ? "Yes" : "No") << "\n";}}