結果
| 問題 | 
                            No.2779 Don't make Pair
                             | 
                    
| コンテスト | |
| ユーザー | 
                             Moss_Local
                         | 
                    
| 提出日時 | 2024-06-07 22:52:43 | 
| 言語 | Rust  (1.83.0 + proconio)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 88 ms / 2,000 ms | 
| コード長 | 4,810 bytes | 
| コンパイル時間 | 13,675 ms | 
| コンパイル使用メモリ | 379,244 KB | 
| 実行使用メモリ | 12,176 KB | 
| 最終ジャッジ日時 | 2024-12-26 09:22:35 | 
| 合計ジャッジ時間 | 16,465 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge3 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 5 | 
| other | AC * 24 | 
コンパイルメッセージ
warning: variable does not need to be mutable
   --> src/main.rs:122:9
    |
122 |     let mut vec: Vec<i64> = read_vec();
    |         ----^^^
    |         |
    |         help: remove this `mut`
    |
    = note: `#[warn(unused_mut)]` on by default
warning: variable does not need to be mutable
   --> src/main.rs:128:9
    |
128 |     let mut vec: Vec<i64> = read_vec();
    |         ----^^^
    |         |
    |         help: remove this `mut`
warning: variable does not need to be mutable
   --> src/main.rs:133:9
    |
133 |     let mut vec: Vec<usize> = read_vec();
    |         ----^^^
    |         |
    |         help: remove this `mut`
warning: variable does not need to be mutable
   --> src/main.rs:139:9
    |
139 |     let mut vec: Vec<f64> = read_vec();
    |         ----^^^
    |         |
    |         help: remove this `mut`
warning: variable does not need to be mutable
   --> src/main.rs:144:9
    |
144 |     let mut vec: Vec<char> = read_vec();
    |         ----^^^
    |         |
    |         help: remove this `mut`
warning: variable does not need to be mutable
   --> src/main.rs:149:9
    |
149 |     let mut vec: Vec<usize> = read_vec();
    |         ----^^^
    |         |
    |         help: remove this `mut`
warning: variable does not need to be mutable
   --> src/main.rs:154:9
    |
154 |     let mut vec: Vec<i64> = read_vec();
    |         ----^^^
    |         |
    |         help: remove this `mut`
warning: variable does not need to be mutable
   --> src/main.rs:160:9
    |
160 |     let mut vec: Vec<usize> = read_vec();
    |         ----^^^
    |         |
    |         help: remove this `mut`
warning: unused variable: `k`
   --> src/main.rs:194:10
    |
194 |     for (k, v) in map.iter() {
    |          ^ help: if this is intentional, prefix it with an underscore: `_k`
    |
    = note: `#[warn(unused_variables)]` on by default
warning: variable does not need to be mutable
   --> src/main.rs:188:9
    |
188 |     let mut a:
            
            ソースコード
// -*- coding:utf-8-unix -*-
// #![feature(map_first_last)]
#![allow(dead_code)]
#![allow(unused_imports)]
#![allow(unused_macros)]
// use core::num;
use std::cmp::*;
use std::fmt::*;
use std::hash::*;
use std::iter::FromIterator;
use std::*;
use std::{cmp, collections, fmt, io, iter, ops, str};
const INF: i64 = 1223372036854775807;
const UINF: usize = INF as usize;
const LINF: i64 = 2147483647;
const INF128: i128 = 1223372036854775807000000000000;
const MOD1: i64 = 1000000007;
const MOD9: i64 = 998244353;
const MOD: i64 = MOD9;
// const MOD: i64 = MOD2;
const UMOD: usize = MOD as usize;
const M_PI: f64 = 3.14159265358979323846;
// use proconio::input;
// const MOD: i64 = INF;
use cmp::Ordering::*;
use std::collections::*;
use std::io::stdin;
use std::io::stdout;
use std::io::Write;
macro_rules! p {
    ($x:expr) => {
        //if expr
        println!("{}", $x);
    };
}
macro_rules! vp {
    // vector print separate with space
    ($x:expr) => {
        println!(
            "{}",
            $x.iter()
                .map(|x| x.to_string())
                .collect::<Vec<_>>()
                .join(" ")
        );
    };
}
macro_rules! d {
    ($x:expr) => {
        eprintln!("{:?}", $x);
    };
}
macro_rules! yn {
    ($val:expr) => {
        if $val {
            println!("Yes");
        } else {
            println!("No");
        }
    };
}
macro_rules! map{
    // declear btreemap
    ($($key:expr => $val:expr),*) => {
        {
            let mut map = ::std::collections::BTreeMap::new();
            $(
                map.insert($key, $val);
            )*
            map
        }
    };
}
macro_rules! set{
    // declear btreemap
    ($($key:expr),*) => {
        {
            let mut set = ::std::collections::BTreeSet::new();
            $(
                set.insert($key);
            )*
            set
        }
    };
}
fn main() {
    solve();
}
//input output
#[allow(dead_code)]
fn read<T: std::str::FromStr>() -> T {
    let mut s = String::new();
    std::io::stdin().read_line(&mut s).ok();
    s.trim().parse().ok().unwrap()
}
#[allow(dead_code)]
fn read_vec<T: std::str::FromStr>() -> Vec<T> {
    read::<String>()
        .split_whitespace()
        .map(|e| e.parse().ok().unwrap())
        .collect()
}
#[allow(dead_code)]
fn read_mat<T: std::str::FromStr>(n: u32) -> Vec<Vec<T>> {
    (0..n).map(|_| read_vec()).collect()
}
#[allow(dead_code)]
fn readii() -> (i64, i64) {
    let mut vec: Vec<i64> = read_vec();
    (vec[0], vec[1])
}
#[allow(dead_code)]
fn readiii() -> (i64, i64, i64) {
    let mut vec: Vec<i64> = read_vec();
    (vec[0], vec[1], vec[2])
}
#[allow(dead_code)]
fn readuu() -> (usize, usize) {
    let mut vec: Vec<usize> = read_vec();
    (vec[0], vec[1])
}
#[allow(dead_code)]
fn readff() -> (f64, f64) {
    let mut vec: Vec<f64> = read_vec();
    (vec[0], vec[1])
}
fn readcc() -> (char, char) {
    let mut vec: Vec<char> = read_vec();
    (vec[0], vec[1])
}
fn readuuu() -> (usize, usize, usize) {
    let mut vec: Vec<usize> = read_vec();
    (vec[0], vec[1], vec[2])
}
#[allow(dead_code)]
fn readiiii() -> (i64, i64, i64, i64) {
    let mut vec: Vec<i64> = read_vec();
    (vec[0], vec[1], vec[2], vec[3])
}
#[allow(dead_code)]
fn readuuuu() -> (usize, usize, usize, usize) {
    let mut vec: Vec<usize> = read_vec();
    (vec[0], vec[1], vec[2], vec[3])
}
fn dijkstra(graph: &Vec<Vec<(usize, usize)>>, start: usize) -> Vec<usize> {
    let mut dist = vec![INF as usize; graph.len()];
    let mut heap = BinaryHeap::new();
    heap.push(Reverse((0 as usize, start)));
    dist[start] = 0;
    while let Some(Reverse(x)) = heap.pop() {
        let cost = x.0;
        let v = x.1;
        if cost > dist[v] {
            continue;
        }
        for edge in &graph[v] {
            let nc = cost + edge.1;
            let nv = edge.0;
            if nc < dist[nv] {
                heap.push(Reverse((nc, nv)));
                dist[nv] = nc;
            }
        }
    }
    return dist;
}
fn solve() {
    let n: usize = read();
    let mut a: Vec<usize> = read_vec();
    let mut map = BTreeMap::new();
    let mut right_more_two_num = 0;
    for i in 0..n {
        *map.entry(a[i]).or_insert(0) += 1;
    }
    for (k, v) in map.iter() {
        if *v >= 2 {
            right_more_two_num += 1;
        }
    }
    let mut left_cnt = BTreeMap::new();
    let mut res = vec![];
    for i in 0..n - 1 {
        let x = a[i];
        *map.entry(x).or_insert(0) -= 1;
        if map[&x] == 1 {
            right_more_two_num -= 1;
        }
        // d!(right_more_two_num);
        *left_cnt.entry(x).or_insert(0) += 1;
        if left_cnt[&x] > 1 {
            break;
        }
        if right_more_two_num == 0 {
            res.push(i + 1);
        }
    }
    p!(res.len());
    vp!(res);
}
            
            
            
        
            
Moss_Local