結果

問題 No.3 ビットすごろく
ユーザー abinull
提出日時 2025-06-18 22:32:50
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
MLE  
実行時間 -
コード長 712 bytes
コンパイル時間 927 ms
コンパイル使用メモリ 83,824 KB
実行使用メモリ 683,412 KB
最終ジャッジ日時 2025-06-18 22:33:03
合計ジャッジ時間 8,275 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 3 MLE * 1 -- * 29
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <bitset>
#include <vector>
#include <queue>
#include <utility>

using namespace std;

int main() {

  int n;
  unsigned int t;
  
  cin >> n;

  vector<int> sg(n);
  vector<bool> v(n, false);

  for (int i=0; i<n; i++) {
    t = i+1;
    sg[i] = (int)__popcount(t);
  }

  queue<int> q;

  int i, u, m, cnt;
  q.push(0);
  u = 0; i = 0; m = 0; cnt = 0;
  
  while (!q.empty()) {

    u = q.front(); q.pop();
    v[u] = true;
    cnt++;   
    
    m = sg[u];

    for (i=(m%2==0 ? u : u+1); i<=u+m; i+=2) {
      if (i>=n) continue;
      if (v[i]==true) continue;
      q.push(i);
    }
  } 
  
 if (u!=sg.size()-1) {cout << -1 << endl;}
 else {cout << cnt << endl;}

  return 0;
}
0