結果
| 問題 |
No.323 yuki国
|
| コンテスト | |
| ユーザー |
tjake
|
| 提出日時 | 2015-12-16 01:21:45 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 187 ms / 5,000 ms |
| コード長 | 2,186 bytes |
| コンパイル時間 | 681 ms |
| コンパイル使用メモリ | 80,556 KB |
| 実行使用メモリ | 25,168 KB |
| 最終ジャッジ日時 | 2024-06-28 12:20:41 |
| 合計ジャッジ時間 | 3,530 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 6 |
| other | AC * 32 |
ソースコード
#include<iostream>
#include<string>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
#include<functional>
#include<cstdio>
#include<cstdlib>
#include<cmath>
using namespace std;
#define mind(a,b) (a>b?b:a)
#define maxd(a,b) (a>b?a:b)
#define absd(x) (x<0?-(x):x)
#define pow2(x) ((x)*(x))
#define rep(i,n) for(int i=0; i<n; ++i)
#define repr(i,n) for(int i=n-1; i>=0; --i)
#define repl(i,s,n) for(int i=s; i<=n; ++i)
#define replr(i,s,n) for(int i=n; i>=s; --i)
#define repf(i,s,n,j) for(int i=s; i<=n; i+=j)
#define repe(e,obj) for(auto e : obj)
#define SP << " " <<
#define COL << " : " <<
#define COM << ", " <<
#define ARR << " -> " <<
#define PNT(STR) cout << STR << endl
#define POS(X,Y) "(" << X << ", " << Y << ")"
#define DEB(A) " (" << #A << ") " << A
#define DEBREP(i,n,val) for(int i=0; i<n; ++i) cout << val << " "; cout << endl
#define ALL(V) (V).begin(), (V).end()
#define INF 1000000007
#define INFLL 10000000000000000007LL
#define EPS 1e-9
typedef unsigned int uint;
typedef unsigned long ulong;
typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> P;
//typedef pair<ll, ll> P;
typedef pair<P, int> PI;
typedef pair<int, P> IP;
typedef pair<P, P> PP;
typedef priority_queue<P, vector<P>, greater<P> > pvqueue;
#define W 53
#define N 2203
int h, w;
int a, si, sj, b, gi, gj;
int used[W][W][N];
char m[W][W];
int dx[] = {-1,0,1,0};
int dy[] = {0,-1,0,1};
int main() {
cin >> h >> w;
cin >> a >> si >> sj >> b >> gi >> gj;
rep(i, h) cin >> m[i];
queue<PI> que;
que.push(PI(P(sj, si), a));
used[si][sj][a] = true;
while(!que.empty()) {
PI p = que.front(); que.pop();
int x = p.first.first, y = p.first.second, sz = p.second;
rep(k, 4) {
int nx = x + dx[k], ny = y + dy[k];
if(nx < 0 || nx >= w || ny < 0 || ny >= h) continue;
int n_sz = (m[ny][nx]=='*' ? sz+1 : sz-1);
if(n_sz > (2*(h+w)+a+b+1)) n_sz = (2*(h+w)+a+b);
if(n_sz>0 && !used[ny][nx][n_sz]) {
que.push(PI(P(nx, ny), n_sz));
used[ny][nx][n_sz] = true;
}
}
}
cout << (used[gi][gj][b] ? "Yes" : "No") << endl;
return 0;
}
tjake