結果
問題 | No.43 野球の試合 |
ユーザー |
![]() |
提出日時 | 2016-07-22 13:13:31 |
言語 | Java (openjdk 23) |
結果 |
WA
|
実行時間 | - |
コード長 | 4,394 bytes |
コンパイル時間 | 3,187 ms |
コンパイル使用メモリ | 81,008 KB |
実行使用メモリ | 54,348 KB |
最終ジャッジ日時 | 2024-11-06 08:06:57 |
合計ジャッジ時間 | 5,565 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 3 WA * 4 |
ソースコード
import java.awt.geom.Point2D;import java.io.*;import java.math.*;import java.util.*;import java.util.Map.*;class Main {static class Data implements Comparable<Data> {int id;int count;@Overridepublic int compareTo(Data o) {return o.count - this.count;}public Data(int a, int b) {id = a;count = b;}}public static void main(String[] args) {//FastScanner sc = new FastScanner();Scanner sc = new Scanner(System.in);int N = sc.nextInt();int[][] st = new int[N][N];for(int i = 0; i < N; i++) {char[] in = sc.next().toCharArray();for(int j = 0; j < N; j++) {if(in[j] == '#') st[i][j] = -1;if(in[j] == 'o') st[i][j] = 1;if(in[j] == 'x') st[i][j] = 2;}}int ans = check(st,0,0);System.out.println(ans);}static int check(int[][] st, int i, int j) {if(i >= st.length) {int[] count = new int[st.length];for(int k = 0; k < st.length; k++) {for(int l = 0; l < st[k].length; l++) {if(st[k][l] == 1) count[k]++;}}Data[] dd = new Data[st.length];for(int k = 0; k < st.length; k++) {dd[k] = new Data(k,count[k]);}Arrays.sort(dd);int[] ck = new int[st.length];int sk = 1;for(int k = 0; k < st.length; k++) {for(int l = k; l < st.length; l++) {ck[dd[l].id] = sk;if(l + 1 < st.length && dd[l+1].count != dd[l].count) {break;}}sk++;}return ck[0];}if(j >= st[i].length) {return check(st,i+1,0);}if(st[i][j] != 0) return check(st,i,j+1);int ret = 2 << 27;st[i][j] = 1;st[j][i] = 2;ret = check(st,i,j+1);st[i][j] = 2;st[j][i] = 1;ret = Math.min(check(st,i,j+1), ret);return ret;}static class FastScanner {private final InputStream in = System.in;private final byte[] buffer = new byte[1024];private int ptr = 0;private int buflen = 0;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;}private void skipUnprintable() { while(hasNextByte() && !isPrintableChar(buffer[ptr])) ptr++;}public boolean hasNext() { skipUnprintable(); 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() {if (!hasNext()) throw new NoSuchElementException();int 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();}}}}