結果
問題 |
No.1013 〇マス進む
|
ユーザー |
|
提出日時 | 2020-10-06 17:47:40 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 587 bytes |
コンパイル時間 | 2,514 ms |
コンパイル使用メモリ | 198,744 KB |
最終ジャッジ日時 | 2025-01-15 03:02:47 |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 34 WA * 28 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:8:23: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 8 | int n,k; scanf("%d%d",&n,&k); | ~~~~~^~~~~~~~~~~~~~ main.cpp:10:23: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 10 | rep(i,n) scanf("%d",&p[i]); | ~~~~~^~~~~~~~~~~~
ソースコード
#include <bits/stdc++.h> #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; int main(){ int n,k; scanf("%d%d",&n,&k); vector<int> p(n); rep(i,n) scanf("%d",&p[i]); vector dbl(30,vector<pair<int,int>>(n)); rep(i,n){ if(i+p[i]<n) dbl[0][i]={i+p[i],0}; else dbl[0][i]={(i+p[i]-n),1}; } for(int t=1;t<30;t++){ rep(i,n){ auto [i1,c1]=dbl[t-1][i]; auto [i2,c2]=dbl[t-1][i1]; dbl[t][i]={i2,c1+c2}; } } rep(i,n){ int x=i,c=0; rep(t,30) if(k>>t&1) { c+=dbl[t][x].second; x=dbl[t][x].first; } printf("%d\n",x+n*c+1); } return 0; }