結果
| 問題 | No.3557 KCPC or KUPC 2 |
| コンテスト | |
| ユーザー |
forest3
|
| 提出日時 | 2026-06-18 15:33:02 |
| 言語 | C++14 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 1,105 bytes |
| 記録 | |
| コンパイル時間 | 1,126 ms |
| コンパイル使用メモリ | 182,096 KB |
| 実行使用メモリ | 6,400 KB |
| 最終ジャッジ日時 | 2026-06-18 15:33:07 |
| 合計ジャッジ時間 | 3,708 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge3_1 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 10 % | AC * 30 |
| 部分点2 | 40 % | AC * 30 |
| 部分点3 | 50 % | AC * 30 |
| 合計 | 100 点 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for(int i = a; i < b; i++)
using ll = long long;
int main(){
ll n, a, b, c, d, e, f;
cin >> n >> a >> b >> c >> d >> e >> f;
ll ma = 1e16;
ll l = -1, h = ma + 1;
while(h - l > 1) {
__int128 m = (l + h) / 2;
__int128 g = a * m;
__int128 m1 = m - b;
if(m1 > 0) {
__int128 div = m1 / b;
__int128 mod = m1 % b;
g += c * (b * (div * (div + 1) / 2));
g += c * mod * (div + 1);
}
if(g >= n) h = m;
else l = m;
}
ll ans1 = h;
l = -1, h = ma + 1;
while(h - l > 1) {
__int128 m = (l + h) / 2;
__int128 g = d * m;
__int128 m1 = m - e;
if(m1 > 0) {
__int128 div = m1 / e;
__int128 mod = m1 % e;
g += f * (e * (div * (div + 1) / 2));
g += f * mod * (div + 1);
}
if(g >= n) h = m;
else l = m;
}
string ans = "Same";
if(h > ans1) ans = "KCPC";
if(h < ans1) ans = "KUPC";
cout << ans << endl;
}
forest3