Submission details
Task:Peli
Sender:vulpesomnia
Submission time:2026-01-17 15:25:08 +0200
Language:Rust (2021)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED17
#2ACCEPTED38
#3ACCEPTED45
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1, 2, 3details
#2ACCEPTED0.01 s1, 2, 3details
#3ACCEPTED0.01 s2, 3details
#4ACCEPTED0.01 s3details
#5ACCEPTED0.01 s2, 3details
#6ACCEPTED0.01 s3details

Code

use std::io;
use std::cmp::{min, max};

fn main() {
    let mut input: String = String::new();
    io::stdin().read_line(&mut input).expect("gg");
    let t: usize = input.trim().parse().unwrap();
    let limit = 2001;
    let mut games: Vec<Vec<bool>> = vec![vec![false; limit]; limit];

    // Index = row/column -> output first column/row when you loose
    let mut rc_lose: Vec<usize> = vec![0; limit];
    let mut d_lose: Vec<usize> = vec![0; limit];

    for i in 0..limit {
        for j in i..limit {
            // SHOULD WORK LIKE THIS; TRY 0...2000 IF NOT
                if (i == 0 || j == 0) || i == j {
                    games[i][j] = true;
                } else {
                    if (rc_lose[i] == 0 && rc_lose[j] == 0) && (d_lose[j - i] == 0) {
                        games[i][j] = false;
                        rc_lose[i] = j;
                        rc_lose[j] = i;
                        d_lose[j - i] = j;
                    } else {
                        games[i][j] = true;
                    }
                }
        }
    }
    for _ in 0..t {
        let mut input: String = String::new();
        io::stdin().read_line(&mut input).expect("gg");
        let mut iter = input.split_whitespace();
        let (a, b): (usize, usize) = (
            iter.next().unwrap().trim().parse().unwrap(),
            iter.next().unwrap().trim().parse().unwrap(),
        );
        let i = min(a, b);
        let j = max(a, b);
        if games[i][j] {
            println!("first");
        } else {
            println!("second");
        }
    }
}

Test details

Test 1 (public)

Group: 1, 2, 3

Verdict: ACCEPTED

input
5
2 2
1 2
3 2
4 3
...

correct output
first
second
first
first
second

user output
first
second
first
first
second

Test 2

Group: 1, 2, 3

Verdict: ACCEPTED

input
100
1 1
1 2
1 3
1 4
...

correct output
first
second
first
first
first
...

user output
first
second
first
first
first
...

Test 3

Group: 2, 3

Verdict: ACCEPTED

input
1000
82 14
91 84
13 97
92 23
...

correct output
first
first
first
first
first
...

user output
first
first
first
first
first
...

Test 4

Group: 3

Verdict: ACCEPTED

input
1000
1630 271
1812 1671
254 1938
1827 443
...

correct output
first
first
first
first
first
...

user output
first
first
first
first
first
...

Test 5

Group: 2, 3

Verdict: ACCEPTED

input
1000
36 14
79 81
93 82
32 1
...

correct output
first
first
first
first
first
...

user output
first
first
first
first
first
...

Test 6

Group: 3

Verdict: ACCEPTED

input
1000
486 300
899 1455
879 543
40 65
...

correct output
second
second
second
second
second
...

user output
second
second
second
second
second
...