結果
| 問題 |
No.1013 〇マス進む
|
| コンテスト | |
| ユーザー |
nehan_der_thal
|
| 提出日時 | 2020-03-20 23:09:57 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 984 bytes |
| コンパイル時間 | 172 ms |
| コンパイル使用メモリ | 82,360 KB |
| 実行使用メモリ | 168,432 KB |
| 最終ジャッジ日時 | 2024-12-15 09:13:52 |
| 合計ジャッジ時間 | 91,394 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 40 TLE * 22 |
ソースコード
N, K = map(int, input().split())
P = list(map(int, input().split()))
d = [0]*N
for i in range(N):
d[i] = (P[i]+i) % N
#print(d)
#vs = set()
rs = [0] * N
for i in range(N):
# if i in vs:
# continue
pvs = set([i])
path = []
lps = []
lpc = 0
v = i
while 1:
path.append(v)
lps.append(lpc)
u = d[v]
if u <= v:
lpc += 1
if u in pvs:
j = path.index(u)
ss = len(path) - j
lpp = lpc - lps[j]
break
# if u in vs:
# break
# vs.add(u)
pvs.add(u)
v = u
for i in range(len(path)):
if K+i >= j:
x = path[(K-j+i)%ss + j]
lp = lps[(K-j+i)%ss + j] + ((K-j+i)//ss)*lpp - lps[i]
else:
x = path[K+i]
lp = lps[K+i] - lps[i]
rs[path[i]] = x+1 + lp*N
# print(path[i], x+1, lp*N)
# print(i, j, ss, path)
for i in range(N):
print(rs[i])
nehan_der_thal