結果
| 問題 |
No.769 UNOシミュレータ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 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 |
ソースコード
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();
}
}
}