結果
| 問題 | No.3557 KCPC or KUPC 2 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-05-29 20:04:32 |
| 言語 | Rust (1.94.0 + proconio + num + itertools) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,743 bytes |
| 記録 | |
| コンパイル時間 | 655 ms |
| コンパイル使用メモリ | 203,016 KB |
| 実行使用メモリ | 7,976 KB |
| 最終ジャッジ日時 | 2026-05-29 20:04:41 |
| 合計ジャッジ時間 | 3,754 ms |
|
ジャッジサーバーID (参考情報) |
judge4_1 / judge1_1 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 10 % | AC * 16 WA * 12 RE * 2 |
| 部分点2 | 40 % | AC * 22 WA * 8 |
| 部分点3 | 50 % | AC * 17 WA * 13 |
| 合計 | 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
}
let k0 = partition_point(0, (n - a) / c * b, |r| (a * r + c * r * (r - 1) / 2) * b <= n) - 1;
let c0 = k0 * b + (n - (a * k0 + k0 * (k0 - 1) / 2) * b) / (a + c * k0);
let k1 = partition_point(0, (n - d) / f * e, |r| (d * r + f * r * (r - 1) / 2) * e <= n) - 1;
let c1 = k1 * e + (n - (d * k1 + 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);
}
}