結果
| 問題 |
No.323 yuki国
|
| コンテスト | |
| ユーザー |
ki_ki33
|
| 提出日時 | 2015-12-16 16:08:14 |
| 言語 | Java (openjdk 23) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,392 bytes |
| コンパイル時間 | 2,368 ms |
| コンパイル使用メモリ | 86,824 KB |
| 実行使用メモリ | 66,720 KB |
| 最終ジャッジ日時 | 2024-09-16 05:41:02 |
| 合計ジャッジ時間 | 11,178 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 6 |
| other | AC * 2 TLE * 1 -- * 29 |
ソースコード
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.geom.Rectangle2D;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentSkipListSet;
import javax.swing.ImageIcon;
public class Main {
static final long C = 1000000007;
static final int CY = 1000000000;
//long[] F;
public void calc() {
long fTime = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
BufferedInputStream bs = new BufferedInputStream(System.in);
Scanner sc = new Scanner(bs);
int h = sc.nextInt();
int w = sc.nextInt();
int f = sc.nextInt();
Point fp = new Point(sc.nextInt(), sc.nextInt());
g = sc.nextInt();
gp = new Point(sc.nextInt(), sc.nextInt());
map = new char[h][];
for (int i=0; i < h; i++) {
map[i] = sc.next().toCharArray();
}
memo = new boolean[h][w][1501];
boolean ans = false;
memo[fp.x][fp.y][f] = true;
msd(fp.x, fp.y);
ans = memo[gp.x][gp.y][g];
System.out.println(ans?"Yes":"No");
}
boolean[][][] memo ;
char[][] map;
int g;
Point gp;
void msd(int x, int y) {
int nx = x+1,ny = y;
int add ;
if (isIn(nx, ny)) {
add = map[nx][ny] == '.'?-1:1;
for (int i=1; i < 1500; i++) {
if (memo[x][y][i]) {
if (!memo[nx][ny][i+add]) {
memo[nx][ny][i+add] = true;
msd(nx, ny);
}
}
}
}
nx = x-1;ny = y;
if (isIn(nx, ny)) {
add = map[nx][ny] == '.'?-1:1;
for (int i=1; i < 1500; i++) {
if (memo[x][y][i]) {
if (!memo[nx][ny][i+add]) {
memo[nx][ny][i+add] = true;
msd(nx, ny);
}
}
}
}
nx = x;ny = y+1;
if (isIn(nx, ny)) {
add = map[nx][ny] == '.'?-1:1;
for (int i=1; i < 1500; i++) {
if (memo[x][y][i]) {
if (!memo[nx][ny][i+add]) {
memo[nx][ny][i+add] = true;
msd(nx, ny);
}
}
}
}
nx = x;ny = y-1;
if (isIn(nx, ny)) {
add = map[nx][ny] == '.'?-1:1;
for (int i=1; i < 1500; i++) {
if (memo[x][y][i]) {
if (!memo[nx][ny][i+add]) {
memo[nx][ny][i+add] = true;
msd(nx, ny);
}
}
}
}
}
boolean isIn(int x, int y) {
return !(x < 0 || y < 0 || map.length <= x || map[0].length <= y);
}
public static void main(String[] args) {
Main main = new Main();
main.calc();
}
}
ki_ki33