結果
問題 |
No.3 ビットすごろく
|
ユーザー |
![]() |
提出日時 | 2015-03-02 14:06:38 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 590 bytes |
コンパイル時間 | 1,377 ms |
コンパイル使用メモリ | 163,496 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-24 01:11:04 |
合計ジャッジ時間 | 2,410 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 18 WA * 15 |
ソースコード
#include <bits/stdc++.h> using namespace std; typedef pair<int,int> P; typedef pair<int,pair<int,int>> PP; typedef long long ll; const double EPS = 1e-8; const int INF = 1e9; const int MOD = 1e9+7; int dy[] = {0,1,0,-1}; int dx[] = {1,0,-1,0}; int N; vector<bool> used; int dfs(int n){ if(n == N)return 0; if(n > N || n < 1 || used[n])return INF; used[n] = true; int mv = __builtin_popcount(n); return min(dfs(n-mv),dfs(n+mv)) + 1; } int main(void) { cin >> N; used.resize(N+1); int ret = dfs(1); if(ret >= INF)cout << -1 << endl; else cout << ret+1 << endl; return 0; }