結果
| 問題 | No.179 塗り分け |
| コンテスト | |
| ユーザー |
Tsukasa_Type
|
| 提出日時 | 2018-03-07 14:41:43 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 3,157 bytes |
| 記録 | |
| コンパイル時間 | 2,843 ms |
| コンパイル使用メモリ | 80,804 KB |
| 実行使用メモリ | 47,792 KB |
| 最終ジャッジ日時 | 2024-10-02 00:58:00 |
| 合計ジャッジ時間 | 8,897 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 WA * 4 |
| other | WA * 4 TLE * 1 -- * 35 |
ソースコード
import java.util.*;
import static java.lang.System.*;
import java.io.*;
public class Main {
static FastScanner sc = new FastScanner(System.in);
public static void main(String[] args) {
int H = sc.nextInt();
int W = sc.nextInt();
LinkedList<Point> p = new LinkedList<Point>();
String s;
char c;
for (int i=0; i<H; i++) {
s = sc.next();
for (int j=0; j<s.length(); j++) {
c = s.charAt(j);
if (c=='#') {p.add(new Point(i,j));}
}
}
int size = p.size();
if (size%2==1) {out.println("NO"); return;}
//ここから平行移動処理
LinkedList<Point> p2 = new LinkedList<Point>();
int y,x;
size = p.size()/2;
for (int i=0; i<H; i++) {
for (int j=1-W; j<W; j++) {
p2 = (LinkedList<Point>)p.clone();
for (int k=0; k<size; k++) {
y = p2.getFirst().getY()+i;
x = p2.removeFirst().getX()+j;
for (int l=0; l<p2.size(); l++) {
if (p2.get(l).getY()==y && p2.get(l).getX()==x) {
p2.remove(l);
}
}
}
out.println("size"+p2.size());
if (p2.size()==0) {out.println("YES"); return;}
}
}
out.println("NO");
}
}
class Point {
private int y;
private int x;
public Point (int y, int x) {
this.y = y;
this.x = x;
}
public int getY () {
return this.y;
}
public int getX () {
return this.x;
}
public int setY (int y) {
return this.y = y;
}
public int setX (int x) {
return this.x = x;
}
}
class FastScanner implements Closeable {
private final InputStream in;
private final byte[] buffer = new byte[1024];
private int ptr = 0;
private int buflen = 0;
public FastScanner(InputStream in) {this.in = in;}
private boolean hasNextByte() {
if (ptr < buflen) {return true;}
else{
ptr = 0;
try {buflen = in.read(buffer);}
catch (IOException e) {e.printStackTrace();}
if (buflen <= 0) {return false;}
}
return true;
}
private int readByte() { if (hasNextByte()) return buffer[ptr++]; else return -1;}
private static boolean isPrintableChar(int c) { return 33 <= c && c <= 126;}
public boolean hasNext() { while(hasNextByte() && !isPrintableChar(buffer[ptr])) ptr++; return hasNextByte();}
public String next() {
if (!hasNext()) throw new NoSuchElementException();
StringBuilder sb = new StringBuilder();
int b = readByte();
while(isPrintableChar(b)) {
sb.appendCodePoint(b);
b = readByte();
}
return sb.toString();
}
public long nextLong() {
if (!hasNext()) throw new NoSuchElementException();
long n = 0;
boolean minus = false;
int b = readByte();
if (b == '-') {
minus = true;
b = readByte();
}
if (b < '0' || '9' < b) {throw new NumberFormatException();}
while(true){
if ('0' <= b && b <= '9') {
n *= 10;
n += b - '0';
}else if(b == -1 || !isPrintableChar(b)){return minus ? -n : n;}
else{throw new NumberFormatException();}
b = readByte();
}
}
public int nextInt() {
long nl = nextLong();
if (nl < Integer.MIN_VALUE || nl > Integer.MAX_VALUE) throw new NumberFormatException();
return (int) nl;
}
public double nextDouble() { return Double.parseDouble(next());}
public void close() {
try {in.close();}
catch (IOException e) {}
}
}
Tsukasa_Type