結果
| 問題 | No.334 門松ゲーム |
| コンテスト | |
| ユーザー |
jp_ste
|
| 提出日時 | 2016-01-31 23:50:34 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 198 ms / 2,000 ms |
| コード長 | 1,622 bytes |
| 記録 | |
| コンパイル時間 | 3,783 ms |
| コンパイル使用メモリ | 84,032 KB |
| 実行使用メモリ | 45,116 KB |
| 最終ジャッジ日時 | 2024-09-21 19:46:36 |
| 合計ジャッジ時間 | 7,326 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 |
ソースコード
import java.util.Scanner;
public class Main {
static int N;
static int list[];
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
N = scan.nextInt();
list = new int[N];
for(int i=0; i<N; i++) {
list[i] = scan.nextInt();
}
scan.close();
boolean flag[] = new boolean[N];
if(!solve(flag, 0, N)) {
System.out.println("-1");
}
}
static boolean solve(boolean flag[], int turn, int cardNum) {
if(cardNum < 3) return false;
boolean win = false;
for(int i=0; i<N; i++) {
for(int j=i+1; j<N; j++) {
for(int k=j+1; k<N; k++) {
if( flag[i]==false && flag[j]==false && flag[k]==false ) {
int indexes[] = {i,j,k};
if(check(indexes)) {
boolean nextFlag[] = flag.clone();
nextFlag[i] = true;
nextFlag[j] = true;
nextFlag[k] = true;
if( solve(nextFlag, turn+1, cardNum-3) ) {
continue;
}
if(turn == 0) {
System.out.println(i+" "+j+" "+k);
}
return true;
}
}
}
}
}
return win;
}
static boolean check(int indexes[]) {
int values[] = new int[3];
int min = Integer.MAX_VALUE;
int max = 0;
for(int i=0; i<3; i++) {
values[i] = list[indexes[i]];
min = Math.min(min, values[i]);
max = Math.max(max, values[i]);
}
int A = values[0];
int B = values[1];
int C = values[2];
if(A != B && A != C && B != C) {
if((min == A && max == B) || (min == C && max == B) || (min == B && max == C) || (min == B && max == A) ) {
return true;
}
}
return false;
}
}
jp_ste