Submission #555928
Source Code Expand
package main import ( "bufio" "os" "strconv" "fmt" "math/big" "io" ) var rdr = bufio.NewReader(os.Stdin) func nextInt() int { i, e := strconv.Atoi(readToken(20)) if e != nil { panic(e) } return i } func nextString(limit int) string { return readToken(limit) } func readToken(limit int) string { buf := make([]byte, 0, limit) for { byte, err := rdr.ReadByte() if err != nil { if err == io.EOF { break } } if byte != 10 && byte != 13 && byte != 32 { buf = append(buf, byte) break } } for { byte, err := rdr.ReadByte() if err != nil { if err == io.EOF { break } } if byte == 10 || byte == 13 || byte == 32 { break } buf = append(buf, byte) } return string(buf) } const INF = 1000000000 func main() { n := nextInt() a := nextInt() - 1 k := nextString(100010) b := make([]int, n) for i := 0 ; i < n ; i++ { b[i] = nextInt() - 1 } M := big.NewInt(0) for i := 0 ; i < len(k) ; i++ { M.Mul(M, big.NewInt(10)) M.Add(M, big.NewInt(int64(k[i] - '0'))) } M.Add(M, big.NewInt(-1)) var time int64 = 0 var cycle int64 = 0 firstVisit := make([]int64, n) part := make([]int, n+10) for i := 0 ; i < n ; i++ { firstVisit[i] = INF } now := b[a] for { if firstVisit[now] != INF { cycle = time - firstVisit[now] break } part[time] = now firstVisit[now] = time now = b[now] time++ } answer := 0 if (M.Cmp(big.NewInt(firstVisit[now])) < 0) { answer = part[M.Int64()] } else { answer = part[firstVisit[now] + M.Mod(M.Sub(M, big.NewInt(firstVisit[now])), big.NewInt(cycle)).Int64()] } fmt.Println(answer+1) }
Submission Info
Submission Time | |
---|---|
Task | D - へんてこ辞書 |
User | hamadu |
Language | Go (1.4.1) |
Score | 100 |
Code Size | 1725 Byte |
Status | AC |
Exec Time | 844 ms |
Memory | 4696 KB |
Judge Result
Set Name | Sample | Subtask1 | All | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 50 / 50 | 50 / 50 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | subtask0_sample_01.txt, subtask0_sample_03.txt |
Subtask1 | subtask0_0.txt, subtask0_1.txt, subtask0_2.txt, subtask0_3.txt, subtask0_4.txt, subtask0_5.txt, subtask0_6.txt, subtask0_7.txt, subtask0_8.txt, subtask0_9.txt, subtask0_sample_01.txt, subtask0_sample_03.txt |
All | subtask0_0.txt, subtask0_1.txt, subtask0_2.txt, subtask0_3.txt, subtask0_4.txt, subtask0_5.txt, subtask0_6.txt, subtask0_7.txt, subtask0_8.txt, subtask0_9.txt, subtask0_sample_01.txt, subtask0_sample_03.txt, subtask1_0.txt, subtask1_1.txt, subtask1_10.txt, subtask1_11.txt, subtask1_2.txt, subtask1_3.txt, subtask1_4.txt, subtask1_5.txt, subtask1_6.txt, subtask1_7.txt, subtask1_8.txt, subtask1_9.txt, subtask1_sample_02.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
subtask0_0.txt | AC | 65 ms | 3120 KB |
subtask0_1.txt | AC | 58 ms | 2732 KB |
subtask0_2.txt | AC | 60 ms | 2984 KB |
subtask0_3.txt | AC | 53 ms | 2596 KB |
subtask0_4.txt | AC | 66 ms | 3240 KB |
subtask0_5.txt | AC | 59 ms | 2924 KB |
subtask0_6.txt | AC | 55 ms | 2576 KB |
subtask0_7.txt | AC | 59 ms | 2996 KB |
subtask0_8.txt | AC | 53 ms | 2644 KB |
subtask0_9.txt | AC | 63 ms | 3112 KB |
subtask0_sample_01.txt | AC | 26 ms | 1184 KB |
subtask0_sample_03.txt | AC | 28 ms | 1072 KB |
subtask1_0.txt | AC | 558 ms | 3688 KB |
subtask1_1.txt | AC | 728 ms | 4008 KB |
subtask1_10.txt | AC | 836 ms | 4696 KB |
subtask1_11.txt | AC | 25 ms | 1184 KB |
subtask1_2.txt | AC | 372 ms | 3676 KB |
subtask1_3.txt | AC | 325 ms | 3236 KB |
subtask1_4.txt | AC | 386 ms | 3240 KB |
subtask1_5.txt | AC | 470 ms | 4144 KB |
subtask1_6.txt | AC | 844 ms | 3112 KB |
subtask1_7.txt | AC | 776 ms | 3236 KB |
subtask1_8.txt | AC | 343 ms | 4012 KB |
subtask1_9.txt | AC | 497 ms | 4388 KB |
subtask1_sample_02.txt | AC | 28 ms | 1140 KB |