From dee321bf0bb21bba66fd4c18daefc1d67fc01972 Mon Sep 17 00:00:00 2001 From: Borys Minaiev Date: Sat, 1 Feb 2025 10:53:31 +0000 Subject: [PATCH] cf --- .../a_stroka.rs | 39 +++++++ .../b_chasovoi_mekhanizm.rs | 48 +++++++++ .../c_chirno_ioperatsii.rs | 61 +++++++++++ .../d_sbalansirovannoe_derevo.rs | 75 +++++++++++++ .../e1_igra_prostaya_versiya.rs | 87 +++++++++++++++ .../f_zadacha_kotovoyazhyora.rs | 101 ++++++++++++++++++ 6 files changed, 411 insertions(+) create mode 100644 archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/a_stroka.rs create mode 100644 archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/b_chasovoi_mekhanizm.rs create mode 100644 archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/c_chirno_ioperatsii.rs create mode 100644 archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/d_sbalansirovannoe_derevo.rs create mode 100644 archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/e1_igra_prostaya_versiya.rs create mode 100644 archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/f_zadacha_kotovoyazhyora.rs diff --git a/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/a_stroka.rs b/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/a_stroka.rs new file mode 100644 index 0000000..e5aa283 --- /dev/null +++ b/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/a_stroka.rs @@ -0,0 +1,39 @@ +//{"name":"A. Строка","group":"Codeforces - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)","url":"https://codeforces.com/contest/2062/problem/0","interactive":false,"timeLimit":1000,"tests":[{"input":"5\n1\n000\n1001\n10101\n01100101011101\n","output":"1\n0\n2\n3\n8\n"}],"testType":"single","input":{"type":"stdin","fileName":null,"pattern":null},"output":{"type":"stdout","fileName":null,"pattern":null},"languages":{"java":{"taskClass":"AStroka"}}} + +#[allow(unused)] +use algo_lib::dbg; +use algo_lib::io::input::Input; +use algo_lib::io::output::Output; + +fn solve(input: &mut Input, out: &mut Output, _test_case: usize) { + let tc = input.usize(); + for _ in 0..tc { + let s = input.string(); + let mut cnt = 0; + for &x in s.iter() { + if x == b'1' { + cnt += 1; + } + } + out.println(cnt); + } +} + +pub(crate) fn run(mut input: Input, mut output: Output) -> bool { + solve(&mut input, &mut output, 1); + output.flush(); + true +} + +//START MAIN + +fn main() { + const PROBLEM_NAME: &str = "a_stroka"; + use algo_lib::tester::helper::*; + + run_tests(PROBLEM_NAME, run); + // run_single_test(PROBLEM_NAME, run, "1"); + // run_stress(stress); + // run_locally(run); +} +//END MAIN diff --git a/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/b_chasovoi_mekhanizm.rs b/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/b_chasovoi_mekhanizm.rs new file mode 100644 index 0000000..5fa5c00 --- /dev/null +++ b/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/b_chasovoi_mekhanizm.rs @@ -0,0 +1,48 @@ +//{"name":"B. Часовой механизм","group":"Codeforces - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)","url":"https://codeforces.com/contest/2062/problem/B","interactive":false,"timeLimit":1500,"tests":[{"input":"5\n2\n4 10\n2\n2 2\n3\n4 10 5\n3\n5 3 5\n5\n12 13 25 17 30\n","output":"YES\nNO\nNO\nYES\nYES\n"}],"testType":"single","input":{"type":"stdin","fileName":null,"pattern":null},"output":{"type":"stdout","fileName":null,"pattern":null},"languages":{"java":{"taskClass":"BChasovoiMekhanizm"}}} + +#[allow(unused)] +use algo_lib::dbg; +use algo_lib::io::input::Input; +use algo_lib::io::output::Output; + +fn solve(input: &mut Input, out: &mut Output, _test_case: usize) { + let tc = input.usize(); + for _ in 0..tc { + let n = input.usize(); + let a = input.vec::(n); + let mut ok = true; + for i in 0..n { + if a[i] == 1 { + ok = false; + } + let len = (2 * i).max(2 * (n - 1 - i)); + if a[i] <= len { + ok = false; + } + } + if ok { + out.println("YES"); + } else { + out.println("NO"); + } + } +} + +pub(crate) fn run(mut input: Input, mut output: Output) -> bool { + solve(&mut input, &mut output, 1); + output.flush(); + true +} + +//START MAIN + +fn main() { + const PROBLEM_NAME: &str = "b_chasovoi_mekhanizm"; + use algo_lib::tester::helper::*; + + run_tests(PROBLEM_NAME, run); + // run_single_test(PROBLEM_NAME, run, "1"); + // run_stress(stress); + // run_locally(run); +} +//END MAIN diff --git a/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/c_chirno_ioperatsii.rs b/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/c_chirno_ioperatsii.rs new file mode 100644 index 0000000..a836255 --- /dev/null +++ b/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/c_chirno_ioperatsii.rs @@ -0,0 +1,61 @@ +//{"name":"C. Чирно и операции","group":"Codeforces - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)","url":"https://codeforces.com/contest/2062/problem/C","interactive":false,"timeLimit":2000,"tests":[{"input":"5\n1\n-1000\n2\n5 -3\n2\n1000 1\n9\n9 7 9 -9 9 -8 7 -8 9\n11\n678 201 340 444 453 922 128 987 127 752 0\n","output":"-1000\n8\n1001\n2056\n269891\n"}],"testType":"single","input":{"type":"stdin","fileName":null,"pattern":null},"output":{"type":"stdout","fileName":null,"pattern":null},"languages":{"java":{"taskClass":"CChirnoIOperatsii"}}} + +use std::collections::{HashSet, VecDeque}; + +#[allow(unused)] +use algo_lib::dbg; +use algo_lib::io::input::Input; +use algo_lib::io::output::Output; + +fn solve(input: &mut Input, out: &mut Output, _test_case: usize) { + let tc = input.usize(); + for _ in 0..tc { + let n = input.usize(); + let a = input.vec::(n); + let mut seen = HashSet::new(); + let mut queue = VecDeque::new(); + queue.push_back(a.clone()); + seen.insert(a.clone()); + let mut max_sum = i64::MIN; + while let Some(cur) = queue.pop_front() { + let sum = cur.iter().sum::(); + max_sum = max_sum.max(sum); + { + let mut next = cur.clone(); + next.reverse(); + if seen.insert(next.clone()) { + queue.push_back(next); + } + } + if cur.len() > 1 { + let mut deltas = vec![]; + for i in 0..cur.len() - 1 { + deltas.push(cur[i] - cur[i + 1]); + } + if seen.insert(deltas.clone()) { + queue.push_back(deltas); + } + } + } + out.println(max_sum); + } +} + +pub(crate) fn run(mut input: Input, mut output: Output) -> bool { + solve(&mut input, &mut output, 1); + output.flush(); + true +} + +//START MAIN + +fn main() { + const PROBLEM_NAME: &str = "c_chirno_ioperatsii"; + use algo_lib::tester::helper::*; + + run_tests(PROBLEM_NAME, run); + // run_single_test(PROBLEM_NAME, run, "1"); + // run_stress(stress); + // run_locally(run); +} +//END MAIN diff --git a/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/d_sbalansirovannoe_derevo.rs b/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/d_sbalansirovannoe_derevo.rs new file mode 100644 index 0000000..0dc13c9 --- /dev/null +++ b/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/d_sbalansirovannoe_derevo.rs @@ -0,0 +1,75 @@ +//{"name":"D. Сбалансированное дерево","group":"Codeforces - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)","url":"https://codeforces.com/contest/2062/problem/D","interactive":false,"timeLimit":3000,"tests":[{"input":"6\n4\n0 11\n6 6\n0 0\n5 5\n2 1\n3 1\n4 3\n7\n1 1\n0 5\n0 5\n2 2\n2 2\n2 2\n2 2\n1 2\n1 3\n2 4\n2 5\n3 6\n3 7\n4\n1 1\n1 1\n1 1\n0 0\n1 4\n2 4\n3 4\n7\n0 20\n0 20\n0 20\n0 20\n3 3\n4 4\n5 5\n1 2\n1 3\n1 4\n2 5\n3 6\n4 7\n5\n1000000000 1000000000\n0 0\n1000000000 1000000000\n0 0\n1000000000 1000000000\n3 2\n2 1\n1 4\n4 5\n6\n21 88\n57 81\n98 99\n61 76\n15 50\n23 67\n2 1\n3 2\n4 3\n5 3\n6 4\n","output":"11\n3\n3\n5\n3000000000\n98\n"}],"testType":"single","input":{"type":"stdin","fileName":null,"pattern":null},"output":{"type":"stdout","fileName":null,"pattern":null},"languages":{"java":{"taskClass":"DSbalansirovannoeDerevo"}}} + +#[allow(unused)] +use algo_lib::dbg; +use algo_lib::io::input::Input; +use algo_lib::io::output::Output; +use algo_lib::misc::rec_function::{Callable2, RecursiveFunction2}; + +fn solve(input: &mut Input, out: &mut Output, _test_case: usize) { + let tc = input.usize(); + for _ in 0..tc { + let n = input.usize(); + let mut left = vec![0; n]; + let mut right = vec![0; n]; + let mut g = vec![vec![]; n]; + for i in 0..n { + left[i] = input.i64(); + right[i] = input.i64(); + } + for _ in 0..n - 1 { + let fr = input.usize() - 1; + let to = input.usize() - 1; + g[fr].push(to); + g[to].push(fr); + } + let mut root = 0; + while g[root].len() > 1 { + root += 1; + } + let mut res = 0; + let root_val = RecursiveFunction2::new(|f, v: usize, p: usize| -> i64 { + let mut children = vec![]; + for &to in g[v].iter() { + if to == p { + continue; + } + let ch = f.call(to, v); + children.push(ch); + } + children.sort(); + if children.is_empty() { + return left[v]; + } + let target = children[children.len() - 1]; + let value = target.clamp(left[v], right[v]); + for &x in children.iter() { + if x > value { + res += x - value; + } + } + value + }) + .call(root, root); + out.println(root_val + res); + } +} + +pub(crate) fn run(mut input: Input, mut output: Output) -> bool { + solve(&mut input, &mut output, 1); + output.flush(); + true +} + +//START MAIN + +fn main() { + const PROBLEM_NAME: &str = "d_sbalansirovannoe_derevo"; + use algo_lib::tester::helper::*; + + run_tests(PROBLEM_NAME, run); + // run_single_test(PROBLEM_NAME, run, "1"); + // run_stress(stress); + // run_locally(run); +} +//END MAIN diff --git a/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/e1_igra_prostaya_versiya.rs b/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/e1_igra_prostaya_versiya.rs new file mode 100644 index 0000000..736984d --- /dev/null +++ b/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/e1_igra_prostaya_versiya.rs @@ -0,0 +1,87 @@ +//{"name":"E1. Игра (простая версия)","group":"Codeforces - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)","url":"https://codeforces.com/contest/2062/problem/E1","interactive":false,"timeLimit":4000,"tests":[{"input":"5\n4\n2 2 4 3\n1 2\n1 3\n2 4\n5\n1 2 3 4 5\n1 2\n2 3\n3 4\n4 5\n3\n1 2 3\n1 2\n1 3\n5\n3 1 3 4 5\n1 2\n2 3\n3 4\n4 5\n10\n1 2 3 2 4 3 3 4 4 3\n1 4\n4 6\n7 4\n6 9\n6 5\n7 8\n1 2\n2 3\n2 10\n","output":"2\n0\n2\n2\n10\n"}],"testType":"single","input":{"type":"stdin","fileName":null,"pattern":null},"output":{"type":"stdout","fileName":null,"pattern":null},"languages":{"java":{"taskClass":"E1IgraProstayaVersiya"}}} + +#[allow(unused)] +use algo_lib::dbg; +use algo_lib::io::input::Input; +use algo_lib::io::output::Output; +use algo_lib::misc::rec_function::{Callable2, RecursiveFunction2}; +use algo_lib::misc::vec_apply_delta::ApplyDelta; +use algo_lib::seg_trees::fenwick::Fenwick; + +fn solve(input: &mut Input, out: &mut Output, _test_case: usize) { + let tc = input.usize(); + for _ in 0..tc { + let n = input.usize(); + let w = input.vec::(n).sub_from_all(1); + let mut g = vec![vec![]; n]; + for _ in 0..n - 1 { + let u = input.usize() - 1; + let v = input.usize() - 1; + g[u].push(v); + g[v].push(u); + } + let mut tin = vec![0; n]; + let mut tout = vec![0; n]; + let mut timer = 0; + RecursiveFunction2::new(|f, v: usize, p: usize| { + tin[v] = timer; + timer += 1; + for &to in g[v].iter() { + if to == p { + continue; + } + f.call(to, v); + } + tout[v] = timer; + timer += 1; + }) + .call(0, 0); + let mut by_w = vec![vec![]; n]; + for i in 0..n { + by_w[w[i]].push(i); + } + let mut f = Fenwick::new(timer); + let mut res_v = n; + let mut cnt_alive = 0; + for w in (0..n).rev() { + for &v in by_w[w].iter() { + let inside = f.get_range_sum(tin[v]..tout[v] + 1); + if inside != cnt_alive { + res_v = v; + break; + } + } + if res_v != n { + break; + } + for &v in by_w[w].iter() { + f.add(tin[v], 1); + cnt_alive += 1; + } + } + if res_v == n { + out.println(0); + } else { + out.println(res_v + 1); + } + } +} + +pub(crate) fn run(mut input: Input, mut output: Output) -> bool { + solve(&mut input, &mut output, 1); + output.flush(); + true +} + +//START MAIN + +fn main() { + const PROBLEM_NAME: &str = "e1_igra_prostaya_versiya"; + use algo_lib::tester::helper::*; + + run_tests(PROBLEM_NAME, run); + // run_single_test(PROBLEM_NAME, run, "1"); + // run_stress(stress); + // run_locally(run); +} +//END MAIN diff --git a/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/f_zadacha_kotovoyazhyora.rs b/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/f_zadacha_kotovoyazhyora.rs new file mode 100644 index 0000000..536190a --- /dev/null +++ b/archive/2025/02/01.02.2025 - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)/f_zadacha_kotovoyazhyora.rs @@ -0,0 +1,101 @@ +//{"name":"F. Задача котовояжёра","group":"Codeforces - Ethflow Round 1 (Codeforces Round 1001, Div. 1 + Div. 2)","url":"https://codeforces.com/contest/2062/problem/F","interactive":false,"timeLimit":2000,"tests":[{"input":"3\n3\n0 2\n2 1\n3 3\n5\n2 7\n7 5\n6 3\n1 8\n7 5\n8\n899167687 609615846\n851467150 45726720\n931502759 23784096\n918190644 196992738\n142090421 475722765\n409556751 726971942\n513558832 998277529\n294328304 434714258\n","output":"4 9\n10 22 34 46\n770051069 1655330585 2931719265 3918741472 5033924854 6425541981 7934325514\n"}],"testType":"single","input":{"type":"stdin","fileName":null,"pattern":null},"output":{"type":"stdout","fileName":null,"pattern":null},"languages":{"java":{"taskClass":"FZadachaKotovoyazhyora"}}} + +#[allow(unused)] +use algo_lib::dbg; +use algo_lib::io::input::Input; +use algo_lib::io::output::Output; + +#[derive(Clone, Copy, Debug)] +struct City { + base: i64, + extra: i64, +} + +fn solve(input: &mut Input, out: &mut Output, _test_case: usize) { + let tc = input.usize(); + for _ in 0..tc { + let n = input.usize(); + let mut right = vec![]; + let mut up = vec![]; + let mut zeros = vec![]; + for id in 0..n { + let a = input.i64(); + let b = input.i64(); + if a == b { + zeros.push(City { base: a, extra: 0 }); + } else if a < b { + right.push(City { + base: a, + extra: b - a, + }); + } else { + up.push(City { + base: b, + extra: a - b, + }); + } + } + let mut res = vec![i64::MAX; n + 1]; + let mut right_with_zeros = right.clone(); + right_with_zeros.extend(zeros.iter().copied()); + let mut up_with_zeros = up.clone(); + up_with_zeros.extend(zeros.iter().copied()); + let mut one_side = |cities: &mut Vec| { + cities.sort_by_key(|c| c.base + c.extra); + dbg!(cities); + for i in 0..cities.len() { + let mut cur_cnt = 1; + let mut cur_cost = cities[i].base; + for j in 0..cities.len() { + if i == j || (cities[j].extra < cities[i].extra) { + continue; + } + cur_cnt += 1; + cur_cost += cities[j].base + cities[j].extra; + dbg!(i, j, cur_cnt, cur_cost); + res[cur_cnt] = res[cur_cnt].min(cur_cost); + } + } + }; + one_side(&mut right_with_zeros); + + one_side(&mut up_with_zeros); + let mut two_side = |right: &mut Vec, up: &mut Vec| { + right.sort_by_key(|c| c.base + c.extra); + up.sort_by_key(|c| c.base + c.extra); + for cnt_right in 1..=right.len() { + let mut cost = 0; + for city in right.iter().take(cnt_right) { + cost += city.base + city.extra; + } + for cnt_up in 1..=up.len() { + cost += up[cnt_up - 1].base + up[cnt_up - 1].extra; + let cnt = cnt_right + cnt_up; + res[cnt] = res[cnt].min(cost); + } + } + }; + two_side(&mut right_with_zeros, &mut up); + out.println(res[2..].to_vec()); + break; + } +} + +pub(crate) fn run(mut input: Input, mut output: Output) -> bool { + solve(&mut input, &mut output, 1); + output.flush(); + true +} + +//START MAIN + +fn main() { + const PROBLEM_NAME: &str = "f_zadacha_kotovoyazhyora"; + use algo_lib::tester::helper::*; + + run_tests(PROBLEM_NAME, run); + // run_single_test(PROBLEM_NAME, run, "1"); + // run_stress(stress); + // run_locally(run); +} +//END MAIN