Task: | Niitty |
Sender: | Kivvil |
Submission time: | 2024-10-30 18:38:32 +0200 |
Language: | Rust (2021) |
Status: | READY |
Result: | 0 |
group | verdict | score |
---|---|---|
#1 | WRONG ANSWER | 0 |
#2 | WRONG ANSWER | 0 |
#3 | WRONG ANSWER | 0 |
#4 | WRONG ANSWER | 0 |
#5 | WRONG ANSWER | 0 |
#6 | WRONG ANSWER | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | WRONG ANSWER | 0.00 s | 1, 2, 3, 4, 5, 6 | details |
#2 | WRONG ANSWER | 0.00 s | 1, 2, 3, 4, 5, 6 | details |
#3 | WRONG ANSWER | 0.00 s | 1, 2, 3, 4, 5, 6 | details |
#4 | WRONG ANSWER | 0.00 s | 1, 2, 3, 4, 5, 6 | details |
#5 | ACCEPTED | 0.00 s | 1, 2, 3, 4, 5, 6 | details |
#6 | WRONG ANSWER | 0.00 s | 2, 3, 4, 5, 6 | details |
#7 | WRONG ANSWER | 0.00 s | 2, 3, 4, 5, 6 | details |
#8 | WRONG ANSWER | 0.00 s | 2, 3, 4, 5, 6 | details |
#9 | WRONG ANSWER | 0.00 s | 2, 3, 4, 5, 6 | details |
#10 | WRONG ANSWER | 0.00 s | 3, 4, 5, 6 | details |
#11 | WRONG ANSWER | 0.00 s | 3, 4, 5, 6 | details |
#12 | WRONG ANSWER | 0.00 s | 3, 4, 5, 6 | details |
#13 | WRONG ANSWER | 0.00 s | 3, 4, 5, 6 | details |
#14 | WRONG ANSWER | 0.01 s | 4, 5, 6 | details |
#15 | WRONG ANSWER | 0.01 s | 4, 5, 6 | details |
#16 | WRONG ANSWER | 0.01 s | 4, 5, 6 | details |
#17 | WRONG ANSWER | 0.01 s | 4, 5, 6 | details |
#18 | WRONG ANSWER | 0.07 s | 5, 6 | details |
#19 | WRONG ANSWER | 0.08 s | 5, 6 | details |
#20 | WRONG ANSWER | 0.08 s | 5, 6 | details |
#21 | WRONG ANSWER | 0.08 s | 5, 6 | details |
#22 | TIME LIMIT EXCEEDED | -- | 6 | details |
#23 | TIME LIMIT EXCEEDED | -- | 6 | details |
#24 | TIME LIMIT EXCEEDED | -- | 6 | details |
#25 | TIME LIMIT EXCEEDED | -- | 6 | details |
Compiler report
warning: unused import: `Read` --> input/code.rs:5:19 | 5 | io::{BufRead, Read}, | ^^^^ | = note: `#[warn(unused_imports)]` on by default warning: unused variable: `y` --> input/code.rs:19:14 | 19 | for (y, line) in stdin_handle.take(n as usize).enumerate() { | ^ help: if this is intentional, prefix it with an underscore: `_y` | = note: `#[warn(unused_variables)]` on by default warning: unused variable: `harvinaisin_kukka` --> input/code.rs:33:9 | 33 | let harvinaisin_kukka = { | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_harvinaisin_kukka` warning: unused variable: `min` --> input/code.rs:34:13 | 34 | let min = kukkien_maarat.values().min().unwrap(); | ^^^ help: if this is intentional, prefix it with an underscore: `_min` warning: struct `Suorakulmio` is never constructed --> input/code.rs:55:12 | 55 | struct Suorakulmio {...
Code
use std::{ cmp::max, cmp::min, collections::{HashMap, HashSet}, io::{BufRead, Read}, }; fn main() { let mut stdin_handle = std::io::stdin().lock().lines(); let n: u32 = stdin_handle.next().unwrap().unwrap().parse().unwrap(); let mut kukkien_maarat: HashMap<char, u32> = HashMap::new(); // Kerätään niitty yksiulotteiseen vektoriin, jossa kukat vasemmalta oikealle rivi kerrallaan // ylhäältä alas. let kukat: Vec<char> = { let mut kukat = Vec::with_capacity((n * n) as usize); for (y, line) in stdin_handle.take(n as usize).enumerate() { let line = line.unwrap(); for kukka in line.chars() { kukkien_maarat .entry(kukka) .and_modify(|maara| *maara += 1) .or_insert(1); } kukat.extend(line.chars()); } kukat }; // Etsitään vähiten esiintynyt kukkalaji let harvinaisin_kukka = { let min = kukkien_maarat.values().min().unwrap(); *kukkien_maarat .iter() .min_by_key(|tuple| *tuple.1) .unwrap() .0 }; let esiintyyko_kaikki_kukat = |x_min: i32, x_max: i32, y_min: i32, y_max: i32| -> bool { let mut esiintyneet_kukat: HashSet<char> = HashSet::with_capacity(kukkien_maarat.len()); for y in y_min..=y_max { for kukka in kukat[(y as usize * n as usize + x_min as usize) ..=(y as usize * n as usize + x_max as usize)] .iter() { esiintyneet_kukat.insert(*kukka); } } esiintyneet_kukat.len() == kukkien_maarat.len() }; struct Suorakulmio { pinta_ala: u32, x_min: u32, x_max: u32, y_min: u32, y_max: u32, } let mut x_min = 0i32; let mut x_max = max(n as i32 - 1, 0); let mut y_min = 0i32; let mut y_max = max(n as i32 - 1, 0); loop { let mut pienennetty = false; // Ylälaita. { let new_y_min = min(y_min + 1, n as i32 - 1); if esiintyyko_kaikki_kukat(x_min, x_max, new_y_min, y_max) && new_y_min != y_min { pienennetty = true; y_min = new_y_min; } } // Alalaita { let new_y_max = max(y_max - 1, 0); if esiintyyko_kaikki_kukat(x_min, x_max, y_min, new_y_max) && new_y_max != y_max { pienennetty = true; y_max = new_y_max; } } // Vasen laita { let new_x_min = min(x_min + 1, n as i32 - 1); if esiintyyko_kaikki_kukat(new_x_min, x_max, y_min, y_max) && new_x_min != x_min { pienennetty = true; x_min = new_x_min } } // Oikea laita { let new_x_max = max(x_max - 1, 0); if esiintyyko_kaikki_kukat(x_min, new_x_max, y_min, y_max) && new_x_max != x_min { pienennetty = true; x_max = new_x_max; } } if !pienennetty { break; } } let aitausten_maara = { let x = x_max as u32 - x_min as u32 + 1; let y = y_max as u32 - y_min as u32 + 1; (n - y + 1) * (n - x + 1) }; println!("{}", aitausten_maara); // let mut tulokset: Vec<Suorakulmio> = Vec::with_capacity(kukkien_maarat.len()); // for (i, kukka) in kukat.iter().enumerate() { // if *kukka != harvinaisin_kukka { // continue; // } // let piste = Piste { // x: i as u32 % n, // y: i as u32 / n, // }; // let mut x_min = piste.x as i32; // let mut x_max = piste.x as i32; // let mut y_min = piste.y as i32; // let mut y_max = piste.y as i32; // // Nyt laajennetaan joka suuntaan yksi blokki kerrallaan muodostaen neliö tämän kukan // // ympärille, kunnes neliön sisällä on ainakin yksi esiintymä kaikista lajeista. // loop { // x_min = max(x_min - 1, 0); // x_max = min(x_max + 1, n as i32 - 1); // y_min = max(y_min - 1, 0); // y_max = min(y_max + 1, n as i32 - 1); // if esiintyyko_kaikki_kukat(x_min, x_max, y_min, y_max) { // // Kaikki kukat ovat esiintyneet neliössä. // println!( // "Kaikki kukat esiintyvät neliössä: x_min: {}, x_max: {}, y_min: {}, y_max: {}", // x_min, x_max, y_min, y_max // ); // break; // } // } // // Nyt on löydetty neliö, jossa on kaikkia lajeja. Seuraavaksi pienennetään tämän neliön // // vasen-, oikea-, ala- ja ylälaitoja yksi kerrallaan, kunnes suorakulmiota ei voida enää // // pienentää hävittämättä jotain lajia. // loop { // let mut pienennetty = false; // // Ylälaita. // { // let new_y_min = min(y_min + 1, n as i32 - 1); // if esiintyyko_kaikki_kukat(x_min, x_max, new_y_min, y_max) && new_y_min != y_min { // pienennetty = true; // y_min = new_y_min; // } // } // // Alalaita // { // let new_y_max = max(y_max - 1, 0); // if esiintyyko_kaikki_kukat(x_min, x_max, y_min, new_y_max) && new_y_max != y_max { // pienennetty = true; // y_max = new_y_max; // } // } // // Vasen laita // { // let new_x_min = min(x_min + 1, n as i32 - 1); // if esiintyyko_kaikki_kukat(new_x_min, x_max, y_min, y_max) && new_x_min != x_min { // pienennetty = true; // x_min = new_x_min // } // } // // Oikea laita // { // let new_x_max = max(x_max - 1, 0); // if esiintyyko_kaikki_kukat(x_min, new_x_max, y_min, y_max) && new_x_max != x_min { // pienennetty = true; // x_max = new_x_max; // } // } // if !pienennetty { // break; // } // } // tulokset.push(Suorakulmio { // pinta_ala: ((x_max - x_min + 1) * (y_max - y_min + 1)) as u32, // x_min: x_min as u32, // x_max: x_max as u32, // y_min: y_min as u32, // y_max: y_max as u32, // }); // println!( // "x_min: {}, x_max: {}, y_min: {}, y_max: {}", // x_min, x_max, y_min, y_max // ); // } // let pienin = tulokset // .iter() // .min_by_key(|kulmio| kulmio.pinta_ala) // .unwrap(); } // Laskee indeksin kukkavektoriin kaksiulotteisesta pisteestä. fn calc_idx(n: u32, x: u32, y: u32) -> usize { (y * n + x) as usize } struct Piste { x: u32, y: u32, }
Test details
Test 1
Group: 1, 2, 3, 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
10 TNCTNPNTPC NPPNTNTPTP NTNTTCNTCT NPCPNPPNTT ... |
correct output |
---|
2035 |
user output |
---|
72 |
Test 2
Group: 1, 2, 3, 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
10 NFWQLWNWYS DZOQJVXFPJ CNHXPXMCQD QRTBVNLTQC ... |
correct output |
---|
9 |
user output |
---|
8 |
Test 3
Group: 1, 2, 3, 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
10 XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX ... |
correct output |
---|
3025 |
user output |
---|
100 |
Test 4
Group: 1, 2, 3, 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
10 FFFFFFFFFF FFFFFCFFFF FFFFFFJFFF FFFFFFFFFF ... |
correct output |
---|
12 |
user output |
---|
9 |
Test 5
Group: 1, 2, 3, 4, 5, 6
Verdict: ACCEPTED
input |
---|
1 X |
correct output |
---|
1 |
user output |
---|
1 |
Test 6
Group: 2, 3, 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
20 BBCBUBOUOBBCUUBBCOUO BOUCOOCUBCOOOCOBOCUO UCCUUUOBCOCBCBUBUCOO BUOBUCUCUOOBCOOUBUOO ... |
correct output |
---|
38724 |
user output |
---|
361 |
Test 7
Group: 2, 3, 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
20 CBGLSHGZHYZDWBNDBJUG SMUXOJQYPXZDTMJUIWOJ XIDSTNBGHKRKOVUVMINB MTQGCFRUHQKALXRNCQGS ... |
correct output |
---|
8334 |
user output |
---|
132 |
Test 8
Group: 2, 3, 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
20 KKKKKKKKKKKKKKKKKKKK KKKKKKKKKKKKKKKKKKKK KKKKKKKKKKKKKKKKKKKK KKKKKKKKKKKKKKKKKKKK ... |
correct output |
---|
44100 |
user output |
---|
400 |
Test 9
Group: 2, 3, 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
20 AAAAAAAAXAAAAAAAAAAA AAAWAAAAAAAAAAAAAOAA AAAAAAAAAAAAAAAAAPAA AAAAAAAAKAAAAAAAAAAZ ... |
correct output |
---|
18 |
user output |
---|
9 |
Test 10
Group: 3, 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
50 GRGREEEGREGXRXXEGXXREXGRRRGRRR... |
correct output |
---|
1584665 |
user output |
---|
2401 |
Test 11
Group: 3, 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
50 AITIISJUHCCRZNKSDCNQKYSQRINFWJ... |
correct output |
---|
1077746 |
user output |
---|
1848 |
Test 12
Group: 3, 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
50 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO... |
correct output |
---|
1625625 |
user output |
---|
2500 |
Test 13
Group: 3, 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
50 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF... |
correct output |
---|
1680 |
user output |
---|
140 |
Test 14
Group: 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
100 NNCMDCDDCCNNNDNCMMNCDCDCCDCDNM... |
correct output |
---|
25325366 |
user output |
---|
9702 |
Test 15
Group: 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
100 LIMQQIHASECROEVILNVULGWZJPPKOG... |
correct output |
---|
22342463 |
user output |
---|
8740 |
Test 16
Group: 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
100 TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT... |
correct output |
---|
25502500 |
user output |
---|
10000 |
Test 17
Group: 4, 5, 6
Verdict: WRONG ANSWER
input |
---|
100 QXQQQQQQQQQQQQQQQQQQQQQQQQQQQQ... |
correct output |
---|
25650 |
user output |
---|
544 |
Test 18
Group: 5, 6
Verdict: WRONG ANSWER
input |
---|
200 NAANANMMKNKKAKMKMAKNKMNKMMNNAA... |
correct output |
---|
403292767 |
user output |
---|
39402 |
Test 19
Group: 5, 6
Verdict: WRONG ANSWER
input |
---|
200 OMYWATTLURKQPTKEFMGGYAOONXWVSC... |
correct output |
---|
388111321 |
user output |
---|
37249 |
Test 20
Group: 5, 6
Verdict: WRONG ANSWER
input |
---|
200 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC... |
correct output |
---|
404010000 |
user output |
---|
40000 |
Test 21
Group: 5, 6
Verdict: WRONG ANSWER
input |
---|
200 LLLLLLLLLLLLLLLLLHLLLLLLLLLLLL... |
correct output |
---|
14159445 |
user output |
---|
11172 |
Test 22
Group: 6
Verdict: TIME LIMIT EXCEEDED
input |
---|
500 VVHWVUHVHUWWWVUUUWVUUHUUWHWUVW... |
correct output |
---|
15683003812 |
user output |
---|
(empty) |
Test 23
Group: 6
Verdict: TIME LIMIT EXCEEDED
input |
---|
500 OIMZGEQSBMBDSDXSWRFNKSGFEBBTJE... |
correct output |
---|
15575906951 |
user output |
---|
(empty) |
Test 24
Group: 6
Verdict: TIME LIMIT EXCEEDED
input |
---|
500 IIIIIIIIIIIIIIIIIIIIIIIIIIIIII... |
correct output |
---|
15687562500 |
user output |
---|
(empty) |
Test 25
Group: 6
Verdict: TIME LIMIT EXCEEDED
input |
---|
500 WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW... |
correct output |
---|
3058970930 |
user output |
---|
(empty) |