#![allow(non_snake_case, unused_imports)] use proconio::{input, marker::Usize1, marker::Chars}; use itertools::Itertools; #[allow(unused_macros)] macro_rules! d { ( $( $x:expr ),* $(,)? ) => { eprintln!( concat!( $( stringify!($x), "={:?} " ),* ), $( $x ),* ); }; } #[allow(dead_code)] fn yn(b: bool) -> &'static str { if b { "Yes" } else { "No" } } fn divmod(a: i128, b: i128) -> (i128, i128) { (a.div_euclid(b), a.rem_euclid(b)) } fn bsearch_right(low: i128, high: i128, pred: F) -> i128 where F: Fn(i128) -> bool, { let mut lo = low; let mut hi = high; let mut res = hi; while lo <= hi { let m = (lo + hi) / 2; if pred(m) { res = res.min(m); hi = m - 1; } else { lo = m + 1; } } res } const INF: i128 = 1 << 60; fn main() { input! { N: i128, A: i128, B: i128, C: i128, D: i128, E: i128, F: i128, } let income = |n: i128, a: i128, b: i128, c: i128| -> i128 { // 0 0 ... 0 (b 個) // c c ... c // 2c 2c ... 2c let (d, m) = divmod(n, b); let last = (d-1) * c; let s = (0 + last) * d / 2; let res = n * a + s * b + (d * c * m); res }; let x = bsearch_right(0, N, |m| income(m, A, B, C) >= N); let y = bsearch_right(0, N, |m| income(m, D, E, F) >= N); let ans = if x == y { "Same" } else if x < y { "KCPC" } else { "KUPC" }; println!("{}", ans); }