結果

問題 No.769 UNOシミュレータ
ユーザー one_meets_seven
提出日時 2019-01-04 04:30:35
言語 Go
(1.23.4)
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 1,245 bytes
コンパイル時間 15,856 ms
コンパイル使用メモリ 222,940 KB
実行使用メモリ 5,504 KB
最終ジャッジ日時 2024-11-22 09:05:42
合計ジャッジ時間 14,795 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 22 WA * 1
権限があれば一括ダウンロードができます

ソースコード

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

package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
run()
}
type state struct {
n int
players map[int]int
who int
prevDraw int
prev string
d int
}
func (s *state) next() {
s.who = (s.who + s.d + s.n) % s.n
}
func (s *state) put() {
s.players[s.who]++
}
func (s *state) draw() {
s.players[s.who] -= s.prevDraw
s.prevDraw = 0
}
func run() {
setSpace()
n := readN()
m := readN()
s := &state{
n: n,
players: make(map[int]int, n),
d: 1,
}
for i := 0; i < m; i++ {
card := read()
if s.prev != card && strings.HasPrefix(s.prev, "draw") {
s.draw()
s.next()
}
s.put()
switch card {
case "drawtwo":
s.prevDraw += 2
case "drawfour":
s.prevDraw += 4
case "skip":
s.next()
case "reverse":
s.d *= -1
}
s.prev = card
s.next()
}
//
s.who = (s.who - s.d + s.n) % s.n
fmt.Printf("%d %d\n", s.who+1, s.players[s.who])
}
var sc = bufio.NewScanner(os.Stdin)
func setSpace() {
sc.Split(bufio.ScanWords)
}
func setLine() {
sc.Split(bufio.ScanLines)
}
func read() string {
sc.Scan()
return sc.Text()
}
func readN() int {
n, err := strconv.Atoi(read())
if err != nil {
panic(err)
}
return n
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0