結果
問題 |
No.1013 〇マス進む
|
ユーザー |
![]() |
提出日時 | 2020-09-30 19:17:48 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 225 ms / 2,000 ms |
コード長 | 980 bytes |
コンパイル時間 | 1,794 ms |
コンパイル使用メモリ | 174,552 KB |
実行使用メモリ | 42,196 KB |
最終ジャッジ日時 | 2024-07-06 07:19:14 |
合計ジャッジ時間 | 11,015 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 62 |
ソースコード
/** * @FileName a.cpp * @Author kanpurin * @Created 2020.09.30 19:17:42 **/ #include "bits/stdc++.h" using namespace std; typedef long long ll; int main() { int n,k;cin >> n >> k; vector<int> p(n); for (int i = 0; i < n; i++) { cin >> p[i]; } vector<vector<int>> next_v(32,vector<int>(n)); vector<vector<ll>> sum(32,vector<ll>(n)); for (int i = 0; i < n; i++) { next_v[0][i] = (i+p[i])%n; sum[0][i] = p[i]; } for (int i = 1; i < 32; i++) { for (int j = 0; j < n; j++) { next_v[i][j] = next_v[i-1][next_v[i-1][j]]; sum[i][j] = sum[i-1][j] + sum[i-1][next_v[i-1][j]]; } } for (int i = 0; i < n; i++) { ll now = i; ll ans = i+1; for (int j = 0; j < 32; j++) { if (k & (1<<j)) { ans += sum[j][now]; now = next_v[j][now]; } } cout << ans << endl; } return 0; }