Task: | Tulostaulu |
Sender: | EmuBird |
Submission time: | 2025-01-18 14:01:02 +0200 |
Language: | Rust (2021) |
Status: | READY |
Result: | 100 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 20 |
#2 | ACCEPTED | 20 |
#3 | ACCEPTED | 60 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.00 s | 1, 3 | details |
#2 | ACCEPTED | 0.00 s | 2, 3 | details |
#3 | ACCEPTED | 0.00 s | 3 | details |
#4 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
#5 | ACCEPTED | 0.00 s | 3 | details |
#6 | ACCEPTED | 0.00 s | 3 | details |
Code
use std::{collections::HashMap, io::{stdin, Stdin}}; fn read_line(stdin: &mut Stdin) -> String { let mut s = String::new(); stdin.read_line(&mut s).unwrap(); s = s.trim().to_owned(); return s } fn main() { let mut stdin = stdin(); let (contestant_count, attempt_count, task_count) = { let line = read_line(&mut stdin); let mut iter = line.split_whitespace().map(|x| x.parse::<u32>().unwrap()); (iter.next().unwrap(), iter.next().unwrap(), iter.next().unwrap()) }; let mut player_data = HashMap::new(); for _ in 0..contestant_count { let line = read_line(&mut stdin); player_data.insert(line, vec![(0_u32, 0_u32); task_count as usize]); } for i in 0..attempt_count { let line = read_line(&mut stdin); let mut iter = line.split_whitespace(); let contestant = iter.next().unwrap(); let task = get_task_index(iter.next().unwrap()); let points: u32 = iter.next().unwrap().parse().unwrap(); let data = player_data.get_mut(contestant).unwrap().get_mut(task).unwrap(); if data.0 < points { data.0 = points; data.1 = i; } } let mut scoreboard: Vec<(&String, (u32, u32))> = player_data.iter().map(|(name, taskdata)| (name, (taskdata.iter().map(|x| x.0).sum(), taskdata.iter().map(|x| x.1).max().unwrap()))).collect(); scoreboard.sort_by(|a, b| b.1.0.cmp(&a.1.0).then(a.1.1.cmp(&b.1.1)).then(a.0.cmp(&b.0))); let scoreboard: Vec<String> = scoreboard.iter().map(|x| format!("{} {}", x.0, x.1.0)).collect(); println!("{}", scoreboard.join("\n")); } fn get_task_index(name: &str) -> usize { name.chars().next().unwrap().to_ascii_uppercase() as usize - 65 }
Test details
Test 1
Group: 1, 3
Verdict: ACCEPTED
input |
---|
1 5000 10 zsyad zsyad J 14 zsyad A 40 zsyad D 34 ... |
correct output |
---|
zsyad 1000 |
user output |
---|
zsyad 1000 |
Test 2
Group: 2, 3
Verdict: ACCEPTED
input |
---|
100 5000 1 eayoy mkiie sqd mgq ... |
correct output |
---|
ujogxx 100 dadxy 100 ttldevgm 100 awbj 100 j 100 ... |
user output |
---|
ujogxx 100 dadxy 100 ttldevgm 100 awbj 100 j 100 ... Truncated |
Test 3
Group: 3
Verdict: ACCEPTED
input |
---|
100 5000 10 bsvhdn xlxadb gbc sadll ... |
correct output |
---|
ezgermxsii 927 urclsrvlq 924 shgvs 919 xwkqtroxqr 918 oovi 893 ... |
user output |
---|
ezgermxsii 927 urclsrvlq 924 shgvs 919 xwkqtroxqr 918 oovi 893 ... Truncated |
Test 4
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
1 0 1 xoezwspspf |
correct output |
---|
xoezwspspf 0 |
user output |
---|
xoezwspspf 0 |
Test 5
Group: 3
Verdict: ACCEPTED
input |
---|
100 5000 10 bwv jxz cpktj mhzevc ... |
correct output |
---|
afvgeut 0 ai 0 amfrsvuqao 0 beadkfbr 0 bkgztu 0 ... |
user output |
---|
afvgeut 0 ai 0 amfrsvuqao 0 beadkfbr 0 bkgztu 0 ... Truncated |
Test 6
Group: 3
Verdict: ACCEPTED
input |
---|
100 5000 10 yifvbbjcz cnpkni qvltt ngpe ... |
correct output |
---|
vgyo 10 msgagpngrd 10 cnpkni 10 lpwlq 10 qguwtubeqi 10 ... |
user output |
---|
vgyo 10 msgagpngrd 10 cnpkni 10 lpwlq 10 qguwtubeqi 10 ... Truncated |