Submission details
Task:Distinct sums
Sender:Hävisin kalapelin
Submission time:2025-11-08 14:47:47 +0200
Language:Rust (2021)
Status:READY
Result:ACCEPTED
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
#9ACCEPTED0.01 sdetails
#10ACCEPTED0.01 sdetails
#11ACCEPTED0.00 sdetails
#12ACCEPTED0.01 sdetails
#13ACCEPTED0.00 sdetails

Compiler report

warning: unused `Result` that must be used
  --> input/code.rs:38:5
   |
38 |     io::stdin().read_line(&mut input);
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: this `Result` may be an `Err` variant, which should be handled
   = note: `#[warn(unused_must_use)]` on by default
help: use `let _ = ...` to ignore the resulting value
   |
38 |     let _ = io::stdin().read_line(&mut input);
   |     +++++++

warning: 1 warning emitted

Code

use std::io;
use std::cmp::Ordering;

//const POWERS: [isize; 9] = [2,4,8,16,32,64,128,256,512];
/*const ANSWERS: [&str; 2] = [
"1 2
0 0",
"2 2 1 2
2 2 0 0
1 2 0 0
0 0 0 0",
"2 2 2 2 2 2 1 2
2 2 2 2 2 2 0 0
2 2 2 2 1 2 0 0
2 2 2 2 0 0 0 0
2 2 1 2 0 0 0 0
2 2 0 0 0 0 0 0
1 2 0 0 0 0 0 0
0 0 0 0 0 0 0 0",
"2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0
2 2 2 2 2 2 2 2 2 2 2 2 1 2 0 0
2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0
2 2 2 2 2 2 2 2 2 2 1 2 0 0 0 0
2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0
2 2 2 2 2 2 2 2 1 2 0 0 0 0 0 0
2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0
2 2 2 2 2 2 1 2 0 0 0 0 0 0 0 0
2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0
2 2 2 2 1 2 0 0 0 0 0 0 0 0 0 0
2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0
2 2 1 2 0 0 0 0 0 0 0 0 0 0 0 0
2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" */
fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input);
    let input = input.trim().parse::<isize>().unwrap();

    if input % 2 == 0 {
        println!("YES");
        for i in 0..input {
            let mut line = String::new();
            for j in 0..input / 2 {
                let val = i + j * 2;
                match val.cmp(&(input-2)) {
                    Ordering::Less => line.push_str("2 2 "),
                    Ordering::Equal => line.push_str("1 2 "),
                    Ordering::Greater => line.push_str("0 0 ")
                }
            }
            println!("{}", line.trim());
        }
    }    else {
        println!("IMPOSSIBLE");
    }
}

Test details

Test 1

Verdict: ACCEPTED

input
1

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 2

Verdict: ACCEPTED

input
2

correct output
YES
0 1 
0 2 

user output
YES
1 2
0 0

Test 3

Verdict: ACCEPTED

input
3

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 4

Verdict: ACCEPTED

input
4

correct output
YES
0 1 0 0 
0 2 2 2 
0 2 0 1 
0 2 0 2 

user output
YES
2 2 1 2
2 2 0 0
1 2 0 0
0 0 0 0

Test 5

Verdict: ACCEPTED

input
5

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 6

Verdict: ACCEPTED

input
657

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 7

Verdict: ACCEPTED

input
132

correct output
YES
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

user output
YES
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...

Test 8

Verdict: ACCEPTED

input
765

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 9

Verdict: ACCEPTED

input
838

correct output
YES
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

user output
YES
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...

Test 10

Verdict: ACCEPTED

input
996

correct output
YES
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

user output
YES
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...

Test 11

Verdict: ACCEPTED

input
997

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 12

Verdict: ACCEPTED

input
998

correct output
YES
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

user output
YES
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...

Test 13

Verdict: ACCEPTED

input
999

correct output
IMPOSSIBLE

user output
IMPOSSIBLE