CSES - Datatähti 2025 alku - Results
Submission details
Task:Kortit I
Sender:Onni
Submission time:2024-10-31 17:55:17 +0200
Language:Rust (2021)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.00 s1, 2, 3details
#20.00 s2, 3details
#30.01 s3details
#40.01 s3details
#50.01 s3details
#60.01 s3details
#70.01 s3details
#80.01 s3details
#90.01 s3details
#100.01 s3details
#110.01 s3details
#120.01 s3details
#130.01 s3details
#140.01 s3details
#150.01 s3details
#160.01 s3details
#170.01 s3details
#180.01 s3details
#190.01 s3details
#200.01 s3details

Code

use std::io;

fn main() {
    let mut game_data: Vec<Vec<i32>> = Vec::new();

    let mut input_test_count = String::new();
    io::stdin().read_line(&mut input_test_count).expect("Failed to read line");
    let test_count: usize = input_test_count.trim().parse().expect("Not a number");

    for _ in 0..test_count {
        let mut input_game_data = String::new();
        io::stdin().read_line(&mut input_game_data).expect("Failed to read line");
        let input_values: Vec<i32> = input_game_data
            .trim()
            .split_whitespace()
            .filter_map(|value| value.parse::<i32>().ok())
            .collect();
        game_data.push(input_values);
    }

    for i in 0..game_data.len() {
        let input_numbers = game_data[i][0];
        let player_1_score = game_data[i][1];
        let player_2_score = game_data[i][2];
        let mut player_1_points = 0;
        let mut player_2_points = 0;
        let available_cards: Vec<i32> = (1..=input_numbers).collect();
        let mut player_1_cards: Vec<i32> = available_cards.clone();
        let mut player_2_cards: Vec<i32> = available_cards.clone();
        let mut player_1_played_cards: Vec<i32> = Vec::new();
        let mut player_2_played_cards: Vec<i32> = Vec::new();

        if
            input_numbers <= 2 &&
            !(player_1_score + player_2_score == 0 || player_1_score + player_2_score == 2)
        {
            println!("NO");
            continue;
        } else if input_numbers > 2 && player_1_score + player_2_score > input_numbers {
            println!("NO");
            continue;
        } else if
            (input_numbers > 2 && player_1_score > input_numbers - 1) ||
            (input_numbers > 2 && player_2_score > input_numbers - 1)
        {
            println!("NO");
            continue;
        } else {
            println!("YES");

            let mut draw_games = input_numbers - (player_1_score + player_2_score);

            for _ in 1..input_numbers + 1 {
                if player_1_points < player_1_score {
                    player_1_points += 1;

                    player_1_cards.reverse();
                    player_1_played_cards.push(player_1_cards[0]);
                    player_2_played_cards.push(player_2_cards[0]);
                    player_1_cards.remove(0);
                    player_1_cards.reverse();
                    player_2_cards.remove(0);
                } else if draw_games > 0 {
                    for _ in 1..draw_games + 1 {
                        draw_games -= 1;
                        player_1_played_cards.push(player_1_cards[0]);
                        player_2_played_cards.push(player_2_cards[0]);
                        player_1_cards.remove(0);
                        player_2_cards.remove(0);
                    }
                } else if player_2_points < player_2_score {
                    player_2_points += 1;

                    player_2_cards.reverse();
                    player_1_played_cards.push(player_1_cards[0]);
                    player_2_played_cards.push(player_2_cards[0]);
                    player_2_cards.remove(0);
                    player_2_cards.reverse();
                    player_1_cards.remove(0);
                }
            }

            for i in 0..player_1_played_cards.len() {
                print!("{:?}", player_1_played_cards[i as usize]);
            }

            println!();

            for i in 0..player_2_played_cards.len() {
                print!("{:?}", player_2_played_cards[i as usize]);
            }

            println!();
        }
    }
}

Test details

Test 1

Group: 1, 2, 3

Verdict:

input
54
4 4 0
3 1 3
3 2 2
4 0 4
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...

Test 2

Group: 2, 3

Verdict:

input
284
6 1 0
5 0 2
7 1 5
7 7 5
...

correct output
NO
NO
YES
1 2 3 4 5 6 7 
2 3 4 5 6 1 7 
...

user output
YES
612345
123456
YES
12345
...

Test 3

Group: 3

Verdict:

input
955
14 2 10
12 2 5
10 4 9
14 1 13
...

correct output
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
YES
1413123456789101112
1234141312111098765
YES
121112345678910
...

Test 4

Group: 3

Verdict:

input
869
17 12 9
16 8 4
15 9 9
17 11 15
...

correct output
NO
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
NO
YES
16151413121110912345678
12345678910111216151413
NO
...

Test 5

Group: 3

Verdict:

input
761
18 3 15
19 1 15
18 8 1
19 19 17
...

correct output
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
YES
181716123456789101112131415
123181716151413121110987654
YES
19123456789101112131415161718
...

Test 6

Group: 3

Verdict:

input
925
21 14 21
20 18 18
20 7 6
21 14 9
...

correct output
NO
NO
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
NO
NO
YES
201918171615141234567891011121...

Test 7

Group: 3

Verdict:

input
529
22 3 3
22 17 5
22 6 15
22 22 20
...

correct output
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
YES
222120123456789101112131415161...

Test 8

Group: 3

Verdict:

input
576
23 18 9
23 16 8
23 16 13
23 16 22
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...

Test 9

Group: 3

Verdict:

input
625
24 2 22
24 15 21
24 6 3
24 21 1
...

correct output
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
YES
242312345678910111213141516171...

Test 10

Group: 3

Verdict:

input
676
25 16 25
25 15 2
25 15 7
25 15 16
...

correct output
NO
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
NO
YES
252423222120191817161514131211...

Test 11

Group: 3

Verdict:

input
729
26 2 18
26 14 18
26 5 18
26 19 13
...

correct output
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
YES
262512345678910111213141516171...

Test 12

Group: 3

Verdict:

input
784
27 26 7
27 14 0
27 14 5
27 14 14
...

correct output
NO
NO
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
NO
YES
272625242322212019181716151412...

Test 13

Group: 3

Verdict:

input
841
28 26 16
28 13 19
28 5 8
28 26 4
...

correct output
NO
NO
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
NO
NO
YES
282726252412345678910111213141...

Test 14

Group: 3

Verdict:

input
900
29 24 15
29 13 2
29 13 7
29 13 16
...

correct output
NO
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
NO
YES
292827262524232221201918171234...

Test 15

Group: 3

Verdict:

input
961
30 24 26
30 12 24
30 4 29
30 24 14
...

correct output
NO
NO
NO
NO
YES
...

user output
NO
NO
NO
NO
YES
...

Test 16

Group: 3

Verdict:

input
1000
15 12 6
33 18 30
44 4 26
6 6 5
...

correct output
NO
NO
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
NO
NO
YES
444342411234567891011121314151...

Test 17

Group: 3

Verdict:

input
1000
45 32 30
4 0 3
46 23 10
71 19 46
...

correct output
NO
NO
YES
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

user output
NO
YES
1234
1432
YES
...

Test 18

Group: 3

Verdict:

input
1000
51 29 37
75 11 72
5 2 4
31 8 26
...

correct output
NO
NO
NO
NO
YES
...

user output
NO
NO
NO
NO
YES
...

Test 19

Group: 3

Verdict:

input
1000
50 20 37
99 45 58
86 79 73
85 70 54
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...

Test 20

Group: 3

Verdict:

input
1000
26 23 5
73 53 59
64 47 41
80 75 55
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...