結果
| 問題 |
No.1588 Connection
|
| コンテスト | |
| ユーザー |
norikame
|
| 提出日時 | 2021-07-08 23:30:09 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
(最新)
QLE
(最初)
|
| 実行時間 | - |
| コード長 | 2,051 bytes |
| コンパイル時間 | 2,332 ms |
| コンパイル使用メモリ | 204,288 KB |
| 最終ジャッジ日時 | 2025-01-22 19:31:26 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 1 |
| other | AC * 23 WA * 8 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i=0; i<(int)(n); ++(i))
#define rep3(i, m, n) for (int i=(m); (i)<(int)(n); ++(i))
#define repr(i, n) for (int i=(int)(n)-1; (i)>=0; --(i))
#define rep3r(i, m, n) for (int i=(int)(n)-1; (i)>=(int)(m); --(i))
#define all(x) (x).begin(), (x).end()
const int INF = (int)(1e9);
int query(int a, int b) {
++a; ++b;
cout << a << ' ' << b << '\n';
cout.flush();
string s;
cin >> s;
cin.ignore();
if (s == (string)("Black")) return 1;
else if (s == (string)("White")) return 0;
else return -1;
}
int main() {
int n, m;
cin >> n >> m;
cin.ignore();
vector<vector<int>> b(n, vector<int>(n, -1));
b[0][0] = b[n-1][n-1] = 1;
queue<pair<int, int>> que;
vector<vector<int>> dist(n, vector<int>(n, INF));
int mcnt = 2, qcnt = 0;
bool ok = false;
que.emplace(0, 0);
dist[0][0] = 0;
while (!que.empty()) {
auto p = que.front(); que.pop();
int y = p.first, x = p.second, d = dist[y][x];
const vector<int> dy = { -1, 0, 1, 0 }, dx = { 0, 1, 0, -1 };
rep(i1, 4) {
int ny = y + dy[i1], nx = x + dx[i1];
if (ny<0 || ny>=n || nx<0 || nx>=n) continue;
if (ny==n-1 && nx==n-1) {
ok = true;
break;
}
if (dist[ny][nx] <= d+1) continue;
if (b[ny][nx] == -1) {
if (mcnt >= m) break;
if (qcnt >= 1499) break;
int qres = query(ny, nx);
++qcnt;
if (qres == -1) { qcnt = 1500; break; }
if (qres == 1) ++mcnt;
b[ny][nx] = qres;
}
if (b[ny][nx] == 0) continue;
if (b[ny][nx] == 1) {
que.emplace(ny, nx);
dist[ny][nx] = d + 1;
}
}
if (ok || mcnt>=m || qcnt>=1499) break;
}
if (ok) cout << "Yes" << endl;
else cout << "No" << endl;
return 0;
}
norikame