結果

問題 No.769 UNOシミュレータ
ユーザー Pump0129
提出日時 2018-12-25 08:50:18
言語 Java
(openjdk 23)
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 4,737 bytes
コンパイル時間 2,331 ms
コンパイル使用メモリ 77,740 KB
実行使用メモリ 50,440 KB
最終ジャッジ日時 2024-11-22 08:57:20
合計ジャッジ時間 8,769 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 22 WA * 1
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

package net.ipipip0129.yukicoder.No769;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class No769 {
int ans = 0;
int person_number;
int log_number;
BufferedReader reader;
No769() throws IOException {
reader = new BufferedReader(new InputStreamReader(System.in));
String[] split_str = reader.readLine().split(" ");
person_number = Integer.parseInt(split_str[0]);
log_number = Integer.parseInt(split_str[1]);
int[] ans_array = analyze();
System.out.printf("%d %d\n", ans_array[0], ans_array[1]);
}
private int[] analyze() throws IOException {
int[] persons_card = new int[person_number];
int turn_number = 0;
int drawtwo_acc = 0;
int drawfour_acc = 0;
boolean is_reverse = false;
for (int i = 0; i < log_number; i++) {
switch (reader.readLine()) {
case "number":
if (0 < drawtwo_acc) {
persons_card[turn_number] -= 2 * drawtwo_acc;
drawtwo_acc = 0;
turn_number = getNextTurn(turn_number, is_reverse);
} else if (0 < drawfour_acc) {
persons_card[turn_number] -= 4 * drawfour_acc;
drawfour_acc = 0;
turn_number = getNextTurn(turn_number, is_reverse);
}
persons_card[turn_number] += 1;
break;
case "drawtwo":
if (0 < drawfour_acc) {
persons_card[turn_number] -= 4 * drawfour_acc;
drawfour_acc = 0;
turn_number = getNextTurn(turn_number, is_reverse);
}
drawtwo_acc += 1;
persons_card[turn_number] += 1;
break;
case "drawfour":
if (0 < drawtwo_acc) {
persons_card[turn_number] -= 2 * drawtwo_acc;
drawtwo_acc = 0;
turn_number = getNextTurn(turn_number, is_reverse);
}
drawfour_acc += 1;
persons_card[turn_number] += 1;
break;
case "skip":
if (0 < drawtwo_acc) {
persons_card[turn_number] -= 2 * drawtwo_acc;
drawtwo_acc = 0;
turn_number = getNextTurn(turn_number, is_reverse);
} else if (0 < drawfour_acc) {
persons_card[turn_number] -= 4 * drawfour_acc;
drawfour_acc = 0;
turn_number = getNextTurn(turn_number, is_reverse);
}
persons_card[turn_number] += 1;
turn_number = getNextTurn(turn_number, is_reverse);
break;
case "reverse":
if (0 < drawtwo_acc) {
persons_card[turn_number] -= 2 * drawtwo_acc;
drawtwo_acc = 0;
turn_number = getNextTurn(turn_number, is_reverse);
} else if (0 < drawfour_acc) {
persons_card[turn_number] -= 4 * drawfour_acc;
drawfour_acc = 0;
turn_number = getNextTurn(turn_number, is_reverse);
}
is_reverse = !is_reverse;
persons_card[turn_number] += 1;
break;
}
turn_number = getNextTurn(turn_number, is_reverse);
}
is_reverse = !is_reverse;
turn_number = getNextTurn(turn_number, is_reverse);
return new int[] {turn_number + 1, persons_card[turn_number]};
}
private int getNextTurn(int turn, boolean reverse) {
if (reverse) {
if (turn == 0) {
return this.person_number - 1;
} else {
return turn - 1;
}
} else {
if (turn == this.person_number - 1) {
return 0;
} else {
return turn + 1;
}
}
}
public int getAns() {
return ans;
}
}
public class Main {
public static void main(String[] args) {
try {
No769 ques = new No769();
} catch (IOException e) {
e.printStackTrace();
}
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0