結果
| 問題 | No.3557 KCPC or KUPC 2 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-05-29 20:25:42 |
| 言語 | Rust (1.94.0 + proconio + num + itertools) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,769 bytes |
| 記録 | |
| コンパイル時間 | 3,684 ms |
| コンパイル使用メモリ | 199,480 KB |
| 実行使用メモリ | 7,976 KB |
| 最終ジャッジ日時 | 2026-05-29 20:25:53 |
| 合計ジャッジ時間 | 5,843 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge1_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 10 % | AC * 25 WA * 5 |
| 部分点2 | 40 % | AC * 28 WA * 2 |
| 部分点3 | 50 % | AC * 28 WA * 2 |
| 合計 | 0 点 |
ソースコード
#![allow(non_snake_case, unused_imports, unused_macros)]
use itertools::Itertools;
use proconio::{fastout, input, marker::Usize1};
macro_rules! debug {
($($a:expr),* $(,)*) => {
#[cfg(debug_assertions)]
eprintln!(concat!($("| ", stringify!($a), "={:?} "),*, "|"), $(&$a),*);
};
}
macro_rules! ndvec {
($v:expr; $n:expr) => {
vec![$v; $n]
};
($v:expr; $n:expr, $($ns:expr),+) => {
vec![ndvec![$v; $($ns),+]; $n]
};
}
macro_rules! yes_no {
($e:expr) => {
if $e {
println!("Yes");
} else {
println!("No");
}
};
}
#[fastout]
fn main() {
input! {
n: i128,
mut a: i128, b: i128, c: i128,
mut d: i128, e: i128, f: i128
}
debug!(a, b, c, d, e, f);
let k0 = partition_point(0, n / a + 1, |r| (a * r + c * r * (r - 1) / 2) * b <= n) - 1;
let c0 = k0 * b + (n - (a * k0 + c * k0 * (k0 - 1) / 2) * b) / (a + c * k0);
let k1 = partition_point(0, n / d + 1, |r| (d * r + f * r * (r - 1) / 2) * e <= n) - 1;
let c1 = k1 * e + (n - (d * k1 + f * k1 * (k1 - 1) / 2) * e) / (d + f * k1);
debug!(k0, k1, c0, c1);
if c0 == c1 {
println!("Same");
} else if c0 < c1 {
println!("KCPC");
} else {
println!("KUPC");
}
}
#[allow(unused)]
fn partition_point<I: num::Integer + Copy>(mut l: I, mut r: I, mut f: impl FnMut(I) -> bool) -> I {
let one = I::one();
let two = one + one;
while l < r {
let p = (r - l) / two + l;
if f(p) {
l = p + one;
} else {
r = p;
}
}
l
}
#[test]
fn test_isqrt() {
for i in 0..100usize {
assert_eq!(i.isqrt(), partition_point(0, i + 1, |k| k * k <= i) - 1);
}
}