結果
| 問題 |
No.1010 折って重ねて
|
| コンテスト | |
| ユーザー |
T1610
|
| 提出日時 | 2020-03-20 21:38:57 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 2,079 bytes |
| コンパイル時間 | 1,781 ms |
| コンパイル使用メモリ | 169,476 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-12-15 04:52:53 |
| 合計ジャッジ時間 | 2,983 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 43 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) REP(i,0,n)
#define REP(i,s,e) for(int i=(s); i<(int)(e); i++)
#define repr(i, n) REPR(i, n, 0)
#define REPR(i, s, e) for(int i=(int)(s-1); i>=(int)(e); i--)
#define pb push_back
#define all(r) r.begin(),r.end()
#define rall(r) r.rbegin(),r.rend()
#define fi first
#define se second
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const ll INF = 1e18;
const ll MOD = 1e9 + 7;
const double EPS = 1e-8;
template<typename T> T chmax(T& a, const T& b){return a = (a > b ? a : b);}
template<typename T> T chmin(T& a, const T& b){return a = (a < b ? a : b);}
using Int = __int128_t;
// https://kenkoooo.hatenablog.com/entry/2016/11/30/163533
std::ostream &operator<<(std::ostream &dest, __int128_t value) {
std::ostream::sentry s(dest);
if (s) {
__uint128_t tmp = value < 0 ? -value : value;
char buffer[128];
char *d = std::end(buffer);
do {
--d;
*d = "0123456789"[tmp % 10];
tmp /= 10;
} while (tmp != 0);
if (value < 0) {
--d;
*d = '-';
}
int len = std::end(buffer) - d;
if (dest.rdbuf()->sputn(d, len) != len) {
dest.setstate(std::ios_base::badbit);
}
}
return dest;
}
__int128 parse(string &s) {
__int128 ret = 0;
for (int i = 0; i < (int)s.length(); i++)
if ('0' <= s[i] && s[i] <= '9')
ret = 10 * ret + s[i] - '0';
return ret;
}
int main(){
Int a, b, h;
{
int _a, _b, _h;
cin >> _a >> _b >> _h;
a = _a;
b = _b;
h = _h;
}
a *= 1000;
b *= 1000;
auto check = [&](Int m, Int a, Int b, Int h) {
rep(i, m) {
if(a > b) swap(a, b);
if(b <= h) return false;
if(a <= h) swap(a, b);
b *= 2;
h *= 4;
}
return true;
};
Int l = 0, r = 32;
rep(i, 128) {
auto m = (l + r) / 2;
if(check(m, a, b, h)) l = m;
else r = m;
}
cout << l << endl;
return 0;
}
T1610