結果
| 問題 | No.3557 KCPC or KUPC 2 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-05-29 19:16:23 |
| 言語 | C++17 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 970 bytes |
| 記録 | |
| コンパイル時間 | 1,230 ms |
| コンパイル使用メモリ | 211,800 KB |
| 実行使用メモリ | 6,400 KB |
| 最終ジャッジ日時 | 2026-05-29 19:16:29 |
| 合計ジャッジ時間 | 3,220 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge3_1 |
| 純コード判定待ち |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 10 % | AC * 30 |
| 部分点2 | 40 % | AC * 30 |
| 部分点3 | 50 % | AC * 30 |
| 合計 | 100 点 |
ソースコード
#include <bits/stdc++.h>
#include <atcoder/modint.hpp>
using namespace std;
using i32 = int;
using i64 = long long;
using i128 = __int128_t;
using f64 = double;
using p2 = pair<i64, i64>;
using p3 = tuple<i64, i64, i64>;
using mint = atcoder::modint998244353;
constexpr i64 inf = 1e18;
void _main();
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
cout << fixed << setprecision(18);
_main();
}
i64 solve(i64 a, i64 b, i64 c, i64 n) {
i64 l = -1, r = n + 1;
while (r - l > 1) {
i64 mid = (l + r) / 2;
i128 x = a * mid;
i64 m = mid;
i64 d = m / b;
x += d * i128(m - b + m % b) / 2 * c;
// while (m >= b) x += (m - b) * c, m -= b;
if (x >= n) r = mid;
else l = mid;
}
return r;
}
void _main() {
i64 n, a, b, c, d, e, f;
cin >> n >> a >> b >> c >> d >> e >> f;
i64 x = solve(a, b, c, n);
i64 y = solve(d, e, f, n);
if (x < y) cout << "KCPC\n";
else if (x > y) cout << "KUPC\n";
else cout << "Same\n";
}