結果

問題 No.3 ビットすごろく
ユーザー Deep_InsteadDeep_Instead
提出日時 2016-01-31 16:37:34
言語 C++11
(gcc 11.4.0)
結果
TLE  
実行時間 -
コード長 1,020 bytes
コンパイル時間 420 ms
コンパイル使用メモリ 56,320 KB
実行使用メモリ 7,756 KB
最終ジャッジ日時 2023-10-21 18:21:34
合計ジャッジ時間 12,909 ms
ジャッジサーバーID
(参考情報)
judge14 / judge15
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 TLE -
testcase_01 -- -
testcase_02 -- -
testcase_03 -- -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
testcase_26 -- -
testcase_27 -- -
testcase_28 -- -
testcase_29 -- -
testcase_30 -- -
testcase_31 -- -
testcase_32 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
using namespace std;

int main()
{
  int n, lane, bit, mov;
  int through[10050];
  bool check[10000];
  bool flg, hit;
  cin >> n;
  flg=true; hit=false;
  through[0]=1; check[0]=true;
  for( int i=1; i<n; ++i ){ through[i]=0; check[i]=true; }
  while( flg )
  {
    for( int i=0; i<n; ++i )
    {
      if( 0<through[i] && check[i] )
      {
        bit=1;
        for( int j=i+1; 1<j; j>>=1 )bit+=j&1;
        lane=(i-bit)*(0==i);
        mov=through[i]+1*(0==i);
        check[i]=false;
        through[lane]*=(through[lane]<=mov);
        flg=(0==through[lane]);
        while( n-1>lane && 0==through[lane] )
        {
          through[lane]=mov;
          bit=1;
          for( int j=lane+1; 1<j; j>>=1 )bit+=j&1;
          lane+=bit;
          mov++;
          through[lane]*=(through[lane]<=mov);
        }
        if(n-1==lane)
        {
          hit=true;
          through[n-1]=mov;
        }
      }
    }
    if(hit)flg=false;
  }
  if(!hit)mov=-1;
  cout << mov << endl;
  return 0;
}
0