結果
問題 | No.43 野球の試合 |
ユーザー |
![]() |
提出日時 | 2015-08-11 18:54:44 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 85 ms / 5,000 ms |
コード長 | 1,350 bytes |
コンパイル時間 | 1,920 ms |
コンパイル使用メモリ | 78,996 KB |
実行使用メモリ | 52,188 KB |
最終ジャッジ日時 | 2024-07-18 06:45:29 |
合計ジャッジ時間 | 3,026 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 7 |
ソースコード
import java.io.*; import java.util.ArrayList; import java.util.Arrays; class Main{ static final PrintWriter out=new PrintWriter(System.out); static final int INF=Integer.MAX_VALUE/2; static int ans=100; static class Pair{ int x; int y; Pair(int x,int y){ this.x=x; this.y=y; } } public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String line=""; while((line=br.readLine())!=null&&!line.isEmpty()){ int n=Integer.parseInt(line); int[] win=new int[n]; ArrayList<Pair> array=new ArrayList<Pair>(); for(int i=0;i<n;i++){ line=br.readLine(); for(int j=0;j<n;j++){ char c=line.charAt(j); if(c=='o') win[i]++; if(c=='-'&&i<j) array.add(new Pair(i,j)); } } dfs(0,win,array); out.println(ans); out.flush(); } } public static void dfs(int depth,int[] win,ArrayList<Pair> array){ if(depth==array.size()||array.isEmpty()){ int r=checkRank(win); ans=Math.min(ans,r); return; } Pair p=array.get(depth); int x=p.x; int y=p.y; win[x]++; dfs(depth+1,win,array); win[x]--; win[y]++; dfs(depth+1,win,array); win[y]--; } public static int checkRank(int[] win){ int[] winc=(int [])win.clone(); int cnt=1; int now; int prev=INF; Arrays.sort(winc); for(int i=winc.length-1;i>=0;i--){ now=winc[i]; if(win[0]==now) return cnt; if(win[0]<now&&prev!=now){ cnt++; prev=now; } } return -1; } }