結果
問題 |
No.3 ビットすごろく
|
ユーザー |
![]() |
提出日時 | 2015-10-23 14:56:03 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
MLE
|
実行時間 | - |
コード長 | 755 bytes |
コンパイル時間 | 678 ms |
コンパイル使用メモリ | 67,292 KB |
実行使用メモリ | 823,016 KB |
最終ジャッジ日時 | 2024-07-22 11:30:59 |
合計ジャッジ時間 | 7,812 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 3 MLE * 1 -- * 29 |
ソースコード
#include <iostream> #include <algorithm> #include <stdlib.h> #include <string> #include <queue> using namespace std; int b(int a){ int k=0; for(int y=0;y<8;y++){ if(a&1 == 1 ) k=k+1; a=a >> 1; } return k; } int main() { queue<pair<int,int> > q; //iti,kaisuu int n; pair<int,int> z; cin>>n; q.push(make_pair(1,1)); int ans=-1; int kaisuu=-1,ichi; while(ans==-1 && kaisuu < n+2){ z=q.front(); ichi=z.first; kaisuu=z.second; if(ichi==n) ans=kaisuu; if(0< ichi+b(ichi) && ichi+b(ichi) <n+1){ q.push(make_pair(ichi+b(ichi),kaisuu+1)); //cout<<ichi+b(ichi)<<" "<<kaisuu+1<<endl; } if(0< ichi-b(ichi) && ichi-b(ichi) <n+1){ q.push(make_pair(ichi-b(ichi),kaisuu+1)); //cout<<ichi-b(ichi)<<" "<<kaisuu+1<<endl; } q.pop(); } cout<<ans<<endl; return 0; }