CSES - HIIT Open 2024 - Results
Submission details
Task:Key cutting
Sender:Kekoäly
Submission time:2024-11-16 16:34:15 +0200
Language:Rust (2021)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.00 sdetails
#7ACCEPTED0.00 sdetails
#8ACCEPTED0.00 sdetails
#90.42 sdetails
#100.42 sdetails
#110.42 sdetails
#120.42 sdetails
#130.43 sdetails
#14ACCEPTED0.32 sdetails

Code

#!allow(unused)
use std::io::stdin;

fn take_int() -> usize {
    let mut input = String::new();
    stdin().read_line(&mut input).unwrap();
    return input.trim().parse().unwrap();
}

fn take_vector() -> Vec<usize> {
    let mut input = String::new();
    stdin().read_line(&mut input).unwrap();
    let arr: Vec<usize> = input.trim().split_whitespace().map(|x| x.parse().unwrap()).collect();
    arr
}

fn solve(lista: Vec<usize>) -> usize {
    // println!("{:?}", lista);
    if lista.len() == 0 {
        return 0
    }
/*     if lista.len() == 1 {
        return 1
    } */
    if !lista.contains(&0) {
        let minu = *lista.iter().min().unwrap();
        // println!("{}", minu);
        let mut new: Vec<usize> = Vec::new();
        for elem in lista.iter() {
            new.push(*elem - minu);
        }
        return 1 + solve(new);
    }
    else {
        let a:usize = lista.iter().position(|&x| x==0).unwrap();
        let b = a+1;
/*         let l = lista.len();
        while b < l {
            if lista[b] == 0 {
                break
            } else {
                b += 1;
            }
        } */

        return solve(lista[..a].to_vec()) + solve(lista[b..].to_vec());
    }

}

fn main() {
    let _ = take_int();
    let lista = take_vector();
    println!("{}", solve(lista))
}

Test details

Test 1

Verdict: ACCEPTED

input
3
1 2 1

correct output
2

user output
2

Test 2

Verdict: ACCEPTED

input
1
0

correct output
0

user output
0

Test 3

Verdict: ACCEPTED

input
1
9

correct output
1

user output
1

Test 4

Verdict: ACCEPTED

input
100
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

correct output
0

user output
0

Test 5

Verdict: ACCEPTED

input
100
0 0 0 1 1 0 0 0 0 1 1 1 0 1 1 ...

correct output
25

user output
25

Test 6

Verdict: ACCEPTED

input
100
2 1 2 1 2 0 0 0 1 1 2 2 1 2 2 ...

correct output
41

user output
41

Test 7

Verdict: ACCEPTED

input
100
36 5 10 37 94 59 20 31 64 2 58...

correct output
99

user output
99

Test 8

Verdict: ACCEPTED

input
100
228768416 32415139 952687252 6...

correct output
100

user output
100

Test 9

Verdict:

input
100000
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

correct output
0

user output
(empty)

Test 10

Verdict:

input
100000
1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 ...

correct output
24965

user output
(empty)

Test 11

Verdict:

input
100000
2 1 2 2 2 2 2 1 1 0 1 1 0 1 1 ...

correct output
38968

user output
(empty)

Test 12

Verdict:

input
100000
4 4 5 4 4 5 0 2 2 1 4 4 1 0 5 ...

correct output
59156

user output
(empty)

Test 13

Verdict:

input
100000
18 5 6 16 8 10 1 7 4 15 5 9 19...

correct output
82598

user output
(empty)

Test 14

Verdict: ACCEPTED

input
100000
33 37 37 86 42 38 18 10 77 57 ...

correct output
94897

user output
94897