結果
| 問題 | No.102 トランプを奪え | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2016-05-18 22:13:18 | 
| 言語 | Java (openjdk 23) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 148 ms / 5,000 ms | 
| コード長 | 2,342 bytes | 
| コンパイル時間 | 3,321 ms | 
| コンパイル使用メモリ | 77,928 KB | 
| 実行使用メモリ | 54,216 KB | 
| 最終ジャッジ日時 | 2024-10-06 05:41:34 | 
| 合計ジャッジ時間 | 5,604 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 8 | 
ソースコード
import java.util.*;
public class Main_yukicoder102 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n1 = sc.nextInt();
        int n2 = sc.nextInt();
        int n3 = sc.nextInt();
        int n4 = sc.nextInt();
        boolean dp[][][][] = new boolean[n1 + 1][n2 + 1][n3 + 1][n4 + 1];
        for (int i1 = 0; i1 <= n1; i1++) {
            for (int i2 = 0; i2 <= n2; i2++) {
                for (int i3 = 0; i3 <= n3; i3++) {
                    for (int i4 = 0; i4 <= n4; i4++) {
                    	if (i1 == 0 && i2 == 0 && i3 == 0 && i4 == 0) {
                    		dp[i1][i2][i3][i4] = false;
                    	} else {
                    		boolean flag = false;
                    		for (int d1 = 1; d1 <= 3; d1++) {
                    			if (i1 - d1 < 0) {
                    				break;
                    			}
                    			if (!dp[i1 - d1][i2][i3][i4]) {
                    				flag = true;
                    				break;
                    			}
                    		}
                    		for (int d2 = 1; d2 <= 3; d2++) {
                    			if (i2 - d2 < 0) {
                    				break;
                    			}
                    			if (!dp[i1][i2 - d2][i3][i4]) {
                    				flag = true;
                    				break;
                    			}
                    		}
                    		for (int d3 = 1; d3 <= 3; d3++) {
                    			if (i3 - d3 < 0) {
                    				break;
                    			}
                    			if (!dp[i1][i2][i3 - d3][i4]) {
                    				flag = true;
                    				break;
                    			}
                    		}
                    		for (int d4 = 1; d4 <= 3; d4++) {
                    			if (i4 - d4 < 0) {
                    				break;
                    			}
                    			if (!dp[i1][i2][i3][i4 - d4]) {
                    				flag = true;
                    				break;
                    			}
                    		}
                    		dp[i1][i2][i3][i4] = flag;
                    	}
                    }
                }
            }
        }
        if (dp[n1][n2][n3][n4]) {
        	System.out.println("Taro");
        } else {
        	System.out.println("Jiro");
        }
        sc.close();
    }
}
            
            
            
        