結果
| 問題 |
No.1286 Stone Skipping
|
| コンテスト | |
| ユーザー |
Shibuyap
|
| 提出日時 | 2020-12-09 11:48:05 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 925 bytes |
| コンパイル時間 | 2,457 ms |
| コンパイル使用メモリ | 191,960 KB |
| 最終ジャッジ日時 | 2025-01-16 20:42:31 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 TLE * 1 |
| other | AC * 7 TLE * 19 |
ソースコード
#include <bits/stdc++.h>
#define rep(i,n) for(ll i = 0; i < (n); ++i)
#define srep(i,s,t) for (ll i = s; i < t; ++i)
#define drep(i,n) for(ll i = (n)-1; i >= 0; --i)
using namespace std;
typedef long long int ll;
typedef pair<int,int> P;
#define yn {puts("YES");}else{puts("NO");}
#define MAX_N 200005
ll ans;
void dfs(ll d, ll k, ll ma, ll tmp){
if(ma<0){
if(d == 0){
ans = min(ans, tmp);
}
return;
}
while(ma>=0){
ll dd = d;
ll ttmp = tmp + (1LL<<ma);
rep(i,k){
dd -= (1LL<<(ma-i));
if(dd<0)break;
if(ma-i==0)break;
}
if(dd==0){
ans = min(ans, ttmp);
}else if(dd>0){
dfs(dd,k,ma-1,ttmp);
}
ma--;
}
}
int main() {
ll D;
cin >> D;
ans = D;
srep(i,2,61){
dfs(D,i,62,0);
}
cout << ans << endl;
return 0;
}
Shibuyap