結果
| 問題 | No.3557 KCPC or KUPC 2 |
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 2026-05-29 19:53:43 |
| 言語 | Go (1.26.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,349 bytes |
| 記録 | |
| コンパイル時間 | 15,404 ms |
| コンパイル使用メモリ | 283,228 KB |
| 実行使用メモリ | 7,972 KB |
| 最終ジャッジ日時 | 2026-05-29 19:54:02 |
| 合計ジャッジ時間 | 16,895 ms |
|
ジャッジサーバーID (参考情報) |
judge3_1 / judge4_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 10 % | AC * 22 WA * 8 |
| 部分点2 | 40 % | AC * 15 WA * 15 |
| 部分点3 | 50 % | AC * 20 WA * 10 |
| 合計 | 0 点 |
ソースコード
package main
import . "fmt"
import . "sort"
func main() {
var n,a,b,c,d,e,f int
Scan(&n,&a,&b,&c,&d,&e,&f)
r1 := Search(n/c+2, func(r int) bool {
return (r+1)*b*a + b*c*r*(r+1)/2 >= n
})
gr1 := (r1+1)*b*a + b*c*r1*(r1+1)/2
t1 := Search(b+2, func(t int) bool {
k := r1*b + t
hk := (k-r1*b+1) * (a + b*r1)
return gr1 - (b*a + b*c*r1) + hk >= n
})
k1 := r1*b + t1
println(k1)
r2 := Search(n/f+2, func(r int) bool {
return (r+1)*e*d + e*f*r*(r+1)/2 >= n
})
gr2 := (r2+1)*e*d + e*f*r2*(r2+1)/2
t2 := Search(e+2, func(t int) bool {
k := r2*e + t
hk := (k-r2*e+1) * (d + e*r2)
return gr2 - (e*d + e*f*r2) + hk >= n
})
k2 := r2*e + t2
println(k2)
switch {
case k1 < k2:
Println("KCPC")
case k1 == k2:
Println("Same")
case k1 > k2:
Println("KUPC")
}
}
/*
考察
え、むず
f(K) = Σ{i=1..K}(x + z * floor((i - 1)/ y))
サンプル1からすると y日間 同じ日給が続くぽい
y日ごとにまとめると
g(R) = Σ{p=0..R}(y*x + y*z*p)
= (R+1)*y*x + y*z*Σ{p=0..R}(p)
= (R+1)*y*x + y*z*R*(R+1)/2
g(R)は単調増加なので g(R) >= N で Rを二分探索
R = floor((rmin-1)/y) = floor((K-1)/y) = floor((rmax-1)/y)
なので
rmin = R * y
f(K) = g(R) - (y*x + y*z*R) + h(K)
h(K) = Σ{i=rmin..K}(x + z * R)
= (K-rmin+1) * (x + z * R)
からf(K) >= N で K を二分探索
*/
ID 21712