結果
| 問題 |
No.2646 Cycle Maze
|
| ユーザー |
kokosei
|
| 提出日時 | 2024-02-25 20:50:55 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,498 bytes |
| コンパイル時間 | 3,059 ms |
| コンパイル使用メモリ | 246,740 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-09-29 11:16:14 |
| 合計ジャッジ時間 | 8,625 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 47 WA * 4 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int H, W, T;
int gx, gy;
int A[220][220], B[220][220];
bool dp[210][210], ndp[210][210];
int dx[5] = {0, 1, 0, -1};
int dy[5] = {1, 0, -1, 0};
template<typename A, int N, typename T>
void Fill(A (&arr)[N], const T &val){
fill((T*)arr, (T*)(arr + N), val);
}
bool inside(int x, int y){
return 0 <= x && x < H && 0 <= y && y < W;
}
int main(void){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> H >> W >> T;
{
int x, y; cin >> x >> y;
x--, y--;
dp[x][y] = true;
}
cin >> gx >> gy;
gx--, gy--;
for(int i = 0;i < H;i++){
string s; cin >> s;
for(int j = 0;j < W;j++){
int v = s[j] - '0';
A[i][j] = B[i][j] = v;
}
}
for(int t = 0;t < T;t++){
if(dp[gx][gy])break;
for(int x = 0;x < H;x++){
for(int y = 0;y < W;y++){
B[x][y] = (A[x][y] + 1 + B[x][y] - 1) % (A[x][y] + 1);
}
}
for(int x = 0;x < H;x++){
for(int y = 0;y < W;y++){
for(int d = 0;d < 5;d++){
int nx = x + dx[d], ny = y + dy[d];
if(!inside(nx, ny))continue;
if(B[nx][ny] == 0)continue;
ndp[nx][ny] |= dp[x][y];
}
}
}
swap(dp, ndp);
Fill(ndp, 0);
}
cout << (dp[gx][gy] ? "Yes\n" : "No\n");
return 0;
}
kokosei