結果
| 問題 |
No.71 そろばん
|
| コンテスト | |
| ユーザー |
kichirb3
|
| 提出日時 | 2018-03-26 21:54:13 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 3 ms / 5,000 ms |
| コード長 | 1,052 bytes |
| コンパイル時間 | 517 ms |
| コンパイル使用メモリ | 63,744 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-06-25 07:26:23 |
| 合計ジャッジ時間 | 1,279 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 20 |
ソースコード
// No.71 そろばん
// Created by kichi on 2018/03/26.
// https://yukicoder.me/problems/no/71
#include <iostream>
using namespace std;
long long solve(long long N);
long long calc_max(long long N, long long x);
int main() {
std::cin.tie(nullptr);
std::ios::sync_with_stdio(false);
long long N;
cin >> N;
long long ans = solve(N);
cout << ans << endl;
}
long long solve(long long N) {
long long ub = N;
long long lb = 1;
while (true) {
long long mid1 = (lb * 2 + ub) / 3;
long long mid2 = (lb + ub * 2) / 3;
long long mid1_score = calc_max(N, mid1);
long long mid2_score = calc_max(N, mid2);
if (mid2_score < mid1_score)
ub = mid2;
else
lb = mid1;
if (ub - lb <= 4)
break;
}
long long ans = 0;
for (long i = lb; i <= ub; ++i)
ans = max(ans, calc_max(N, i));
return ans;
}
long long calc_max(long long N, long long x) {
long long tmp;
tmp = (N * x) + N;
return tmp - (x * x);
}
kichirb3