結果
問題 | No.3 ビットすごろく |
ユーザー |
![]() |
提出日時 | 2017-03-01 23:47:06 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 794 bytes |
コンパイル時間 | 540 ms |
コンパイル使用メモリ | 66,400 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-06-12 22:49:02 |
合計ジャッジ時間 | 1,579 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 10 WA * 23 |
ソースコード
#include <iostream>#include <vector>#include <queue>#include <algorithm>#include <string>#define REP(i,n) for(int i=0;i<(n);++i)#define SORT(a) sort((a).begin(),(a).end())#define PB push_backusing namespace std;typedef vector<int> VI;typedef queue<int> QI;int main(){int N;cin >> N;int pc[10001], d[10001];REP(i,10001){int t = i, s = 0;while(t != 0){if(t & 1){ ++s; }t >>= 1;}pc[i] = s;d[i] = -1;}QI q;q.push(1);d[1] = 0;while(d[N] && !q.empty()){int c = q.front();q.pop();int cn = c - pc[c], cp = c + pc[c];if(cp <= N && d[cp] == -1){d[cp] = d[c] + 1;q.push(cp);}if(cn > 0 && d[cn] == -1){d[cn] = d[c] + 1;q.push(cn);}}cout << d[N] << endl;}