diff --git a/agc011/Cargo.lock b/agc011/Cargo.lock index be05307f..3b7cbbcb 100644 --- a/agc011/Cargo.lock +++ b/agc011/Cargo.lock @@ -4,16 +4,100 @@ name = "agc011" version = "0.1.0" dependencies = [ + "num", "proconio", "superslice", ] +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "num" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + [[package]] name = "proc-macro2" version = "0.4.30" @@ -35,9 +119,9 @@ dependencies = [ [[package]] name = "proconio-derive" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc2f2111a9562adf5ba291143c434818c908a05636c8a492a0a69ba4720a2c16" +checksum = "8096c9313b401ca5bf09f93235fdf4fe6dbedc4f64e3968d2688bf89433a6738" dependencies = [ "proc-macro2", "quote", diff --git a/agc011/Cargo.toml b/agc011/Cargo.toml index e4fe26ea..878a4820 100644 --- a/agc011/Cargo.toml +++ b/agc011/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "agc011" version = "0.1.0" -authors = ["bouzuya "] edition = "2018" # dependencies added to new project [dependencies] +num = "=0.2.1" proconio = { version = "=0.3.6", features = ["derive"] } superslice = "=1.0.0" diff --git a/agc011/src/bin/a.rs b/agc011/src/bin/a.rs index 50e23b6c..5372d973 100644 --- a/agc011/src/bin/a.rs +++ b/agc011/src/bin/a.rs @@ -3,24 +3,24 @@ use proconio::input; fn main() { input! { n: usize, - c: usize, + capital_c: usize, k: usize, mut t: [usize; n], }; t.sort(); - let mut ans = 0; - let mut i_l = 0; - let mut i_r = 0; - while i_l < n { - while i_r + 1 < n && t[i_r + 1] <= t[i_l] + k { - i_r += 1; - } - ans += 1; - i_l += c; - if i_l > i_r { - i_l = i_r + 1; + let mut index = 0_usize; + let mut count = 0_usize; + while index < n { + let mut c = 0_usize; + let mut j = index; + while (j < n) && (t[j] <= t[index] + k) && (c < capital_c) { + c += 1; + j += 1; } + count += 1; + index = j; } + let ans = count; println!("{}", ans); } diff --git a/agc011/src/bin/b.rs b/agc011/src/bin/b.rs index 210c5992..0a3f4d9a 100644 --- a/agc011/src/bin/b.rs +++ b/agc011/src/bin/b.rs @@ -3,20 +3,20 @@ use proconio::input; fn main() { input! { n: usize, - mut a: [i64; n], + mut a: [usize; n], }; a.sort(); - let s = std::iter::once(0) - .chain(a.iter().scan(0, |acc, a_i| { - *acc += a_i; + let c = std::iter::once(0) + .chain(a.iter().scan(0, |acc, &i| { + *acc += i; Some(*acc) })) - .collect::>(); - let c = a - .iter() - .zip(s.iter()) - .rposition(|(&a_i, &s_i)| s_i * 2 < a_i) + .collect::>(); + let count = a + .into_iter() + .zip(c.into_iter()) + .rposition(|(a_i, c_i)| a_i > c_i * 2) .unwrap_or(0); - let ans = n - c; + let ans = n - count; println!("{}", ans); } diff --git a/agc011/src/bin/c.rs b/agc011/src/bin/c.rs index 101ebb15..2a9506c8 100644 --- a/agc011/src/bin/c.rs +++ b/agc011/src/bin/c.rs @@ -1,5 +1,4 @@ -use proconio::input; -use proconio::marker::Usize1; +use proconio::{input, marker::Usize1}; fn main() { input! { diff --git a/agc011/src/bin/d.rs b/agc011/src/bin/d.rs index 101ebb15..2a9506c8 100644 --- a/agc011/src/bin/d.rs +++ b/agc011/src/bin/d.rs @@ -1,5 +1,4 @@ -use proconio::input; -use proconio::marker::Usize1; +use proconio::{input, marker::Usize1}; fn main() { input! { diff --git a/agc011/src/bin/e.rs b/agc011/src/bin/e.rs index 101ebb15..2a9506c8 100644 --- a/agc011/src/bin/e.rs +++ b/agc011/src/bin/e.rs @@ -1,5 +1,4 @@ -use proconio::input; -use proconio::marker::Usize1; +use proconio::{input, marker::Usize1}; fn main() { input! { diff --git a/agc011/src/bin/f.rs b/agc011/src/bin/f.rs index 101ebb15..2a9506c8 100644 --- a/agc011/src/bin/f.rs +++ b/agc011/src/bin/f.rs @@ -1,5 +1,4 @@ -use proconio::input; -use proconio::marker::Usize1; +use proconio::{input, marker::Usize1}; fn main() { input! {