Submission #60108569


Source Code Expand

use std::collections::BTreeSet;

use itertools::Itertools;
use proconio::{input, marker::Usize1};
fn main() {
    input!{
        n: usize,
        a: [Usize1; n],
    }

    let v = a.iter()
        .copied()
        .dedup_by_with_count(|x, y| x == y)
        .collect_vec();

    let mut l = 0;
    let mut r = 0;

    let mut cnt = 0u64;
    let mut seen = vec![false; n];
    let mut ans = 0u64;

    while r < v.len() {
        if v[r].0 == 2 {
            if seen[v[r].1] {
                for i in l..r {
                    if v[i].1 == v[r].1 {
                        l = i + 1;
                        break;
                    } else {
                        seen[v[i].1] = false;
                        cnt -= 1;
                    }
                }
            } else {
                seen[v[r].1] = true;
                cnt += 1;
                ans.chmax(cnt * 2);
            }
            r += 1;
        } else if v[r].0 == 1 {
            for i in l..r {
                seen[v[i].1] = false;
            }
            cnt = 0;
            r += 1;
            l = r;
        } else {
            if !seen[v[r].1] {
                ans.chmax((cnt + 1) * 2);
            }
            for i in l..r {
                seen[v[i].1] = false;
                if v[i].1 == v[r].1 {
                    ans.chmax(cnt * 2);
                } else {
                    cnt -= 1;
                }
            }
            l = r;
            seen[v[r].1] = true;
            cnt = 1;
            r += 1;
        }
    }
    ans.chmax(cnt * 2);
    println!("{ans}");
}

pub trait ChLibs<T: std::cmp::Ord> {
    fn chmin(&mut self, elm: T) -> bool;
    fn chmax(&mut self, elm: T) -> bool;
}

impl<T: std::cmp::Ord> ChLibs<T> for T {
    fn chmin(&mut self, elm: T) -> bool {
        if *self > elm {
            *self = elm;
            true
        } else {
            false
        }
    }

    fn chmax(&mut self, elm: T) -> bool {
        if *self < elm {
            *self = elm;
            true
        } else {
            false
        }
    }
}

Submission Info

Submission Time
Task D - 1122 Substring
User ardRiriy
Language Rust (rustc 1.70.0)
Score 425
Code Size 2169 Byte
Status AC
Exec Time 8 ms
Memory 7996 KiB

Compile Error

warning: unused import: `std::collections::BTreeSet`
 --> src/main.rs:1:5
  |
1 | use std::collections::BTreeSet;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

Judge Result

Set Name Sample All after_contest
Score / Max Score 0 / 0 425 / 425 0 / 0
Status
AC × 3
AC × 39
AC × 20
Set Name Test Cases
Sample example_00.txt, example_01.txt, example_02.txt
All example_00.txt, example_01.txt, example_02.txt, hand_00.txt, hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, random_00.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, random_23.txt, random_24.txt, random_25.txt, random_26.txt, random_27.txt, random_28.txt, random_29.txt
after_contest after_contest_00.txt, after_contest_01.txt, after_contest_02.txt, after_contest_03.txt, after_contest_04.txt, after_contest_05.txt, after_contest_06.txt, after_contest_07.txt, after_contest_08.txt, after_contest_09.txt, after_contest_10.txt, after_contest_11.txt, after_contest_12.txt, after_contest_13.txt, after_contest_14.txt, after_contest_15.txt, after_contest_16.txt, after_contest_17.txt, after_contest_18.txt, after_contest_19.txt
Case Name Status Exec Time Memory
after_contest_00.txt AC 1 ms 1976 KiB
after_contest_01.txt AC 1 ms 1900 KiB
after_contest_02.txt AC 3 ms 2984 KiB
after_contest_03.txt AC 3 ms 3348 KiB
after_contest_04.txt AC 2 ms 2596 KiB
after_contest_05.txt AC 2 ms 2544 KiB
after_contest_06.txt AC 5 ms 4632 KiB
after_contest_07.txt AC 1 ms 1972 KiB
after_contest_08.txt AC 1 ms 1860 KiB
after_contest_09.txt AC 5 ms 4912 KiB
after_contest_10.txt AC 1 ms 1840 KiB
after_contest_11.txt AC 7 ms 6724 KiB
after_contest_12.txt AC 8 ms 7944 KiB
after_contest_13.txt AC 8 ms 7940 KiB
after_contest_14.txt AC 8 ms 6516 KiB
after_contest_15.txt AC 1 ms 2060 KiB
after_contest_16.txt AC 1 ms 1976 KiB
after_contest_17.txt AC 1 ms 1840 KiB
after_contest_18.txt AC 1 ms 1972 KiB
after_contest_19.txt AC 1 ms 2000 KiB
example_00.txt AC 1 ms 1924 KiB
example_01.txt AC 1 ms 1972 KiB
example_02.txt AC 1 ms 1988 KiB
hand_00.txt AC 7 ms 6436 KiB
hand_01.txt AC 8 ms 7872 KiB
hand_02.txt AC 7 ms 6516 KiB
hand_03.txt AC 7 ms 6300 KiB
hand_04.txt AC 5 ms 4732 KiB
hand_05.txt AC 1 ms 1972 KiB
random_00.txt AC 7 ms 6080 KiB
random_01.txt AC 7 ms 6192 KiB
random_02.txt AC 7 ms 6312 KiB
random_03.txt AC 7 ms 6528 KiB
random_04.txt AC 7 ms 6480 KiB
random_05.txt AC 7 ms 6520 KiB
random_06.txt AC 7 ms 6528 KiB
random_07.txt AC 7 ms 6480 KiB
random_08.txt AC 7 ms 6416 KiB
random_09.txt AC 8 ms 6496 KiB
random_10.txt AC 7 ms 6016 KiB
random_11.txt AC 7 ms 6228 KiB
random_12.txt AC 7 ms 6232 KiB
random_13.txt AC 7 ms 6556 KiB
random_14.txt AC 8 ms 6528 KiB
random_15.txt AC 7 ms 6368 KiB
random_16.txt AC 7 ms 6436 KiB
random_17.txt AC 7 ms 6548 KiB
random_18.txt AC 7 ms 6420 KiB
random_19.txt AC 7 ms 6424 KiB
random_20.txt AC 7 ms 7128 KiB
random_21.txt AC 7 ms 6364 KiB
random_22.txt AC 7 ms 6624 KiB
random_23.txt AC 7 ms 6416 KiB
random_24.txt AC 7 ms 6500 KiB
random_25.txt AC 7 ms 6560 KiB
random_26.txt AC 7 ms 6976 KiB
random_27.txt AC 7 ms 6780 KiB
random_28.txt AC 8 ms 7996 KiB
random_29.txt AC 8 ms 7848 KiB