結果

問題 No.1053 ゲーミング棒
ユーザー Yukino DX.Yukino DX.
提出日時 2024-08-22 14:35:49
言語 Rust
(1.77.0 + proconio)
結果
WA  
実行時間 -
コード長 1,076 bytes
コンパイル時間 18,136 ms
コンパイル使用メモリ 404,968 KB
実行使用メモリ 10,368 KB
最終ジャッジ日時 2024-08-22 14:36:10
合計ジャッジ時間 16,799 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
6,816 KB
testcase_01 AC 1 ms
6,812 KB
testcase_02 AC 1 ms
6,944 KB
testcase_03 AC 1 ms
6,940 KB
testcase_04 AC 1 ms
6,944 KB
testcase_05 AC 1 ms
6,944 KB
testcase_06 AC 1 ms
6,940 KB
testcase_07 AC 1 ms
6,944 KB
testcase_08 AC 1 ms
6,944 KB
testcase_09 AC 1 ms
6,940 KB
testcase_10 AC 1 ms
6,940 KB
testcase_11 AC 1 ms
6,940 KB
testcase_12 AC 1 ms
6,940 KB
testcase_13 AC 1 ms
6,944 KB
testcase_14 AC 1 ms
6,944 KB
testcase_15 AC 1 ms
6,944 KB
testcase_16 AC 1 ms
6,944 KB
testcase_17 AC 1 ms
6,940 KB
testcase_18 AC 1 ms
6,944 KB
testcase_19 AC 1 ms
6,944 KB
testcase_20 AC 1 ms
6,940 KB
testcase_21 AC 1 ms
6,940 KB
testcase_22 AC 1 ms
6,944 KB
testcase_23 AC 5 ms
6,940 KB
testcase_24 AC 5 ms
6,940 KB
testcase_25 AC 26 ms
10,356 KB
testcase_26 AC 24 ms
10,368 KB
testcase_27 AC 1 ms
6,944 KB
testcase_28 AC 1 ms
6,944 KB
testcase_29 AC 1 ms
6,940 KB
testcase_30 AC 4 ms
6,944 KB
testcase_31 AC 8 ms
6,944 KB
testcase_32 AC 8 ms
6,940 KB
testcase_33 WA -
testcase_34 WA -
testcase_35 AC 8 ms
6,940 KB
testcase_36 AC 10 ms
6,944 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

use proconio::input;

fn main() {
    input! {
        n:usize,
        a:[usize;n],
    }

    let mut seen = vec![false; n + 1];
    let mut prev = 0;
    let mut ok = true;
    for i in 0..n {
        if prev != a[i] && seen[a[i]] {
            ok = false;
            break;
        }

        seen[a[i]] = true;
        prev = a[i];
    }
    if ok {
        println!("0");
        return;
    }

    let mut poss = vec![vec![]; n + 1];
    for i in 0..n {
        poss[a[i]].push(i as i64);
    }

    let mut ok = true;
    for i in 0..=n {
        if poss[i].len() <= 1 {
            continue;
        }

        if !f(n, poss[i].len(), &poss[i]) {
            ok = false;
        }
    }

    let ans = if ok { 1 } else { -1 };

    println!("{}", ans);
}

fn f(m: usize, n: usize, a: &Vec<i64>) -> bool {
    for i in 0..n {
        let l = (a[i] - a[(i as i64 - 1).rem_euclid(n as i64) as usize]).rem_euclid(m as i64);
        let r = (a[(i + 1) % n] - a[i]).rem_euclid(m as i64);
        if l != 1 && r != 1 {
            return false;
        }
    }

    true
}
0