結果
| 問題 | No.2710 How many more? | 
| コンテスト | |
| ユーザー |  well-defined | 
| 提出日時 | 2024-09-16 15:30:43 | 
| 言語 | Rust (1.83.0 + proconio) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 192 ms / 2,000 ms | 
| コード長 | 1,202 bytes | 
| コンパイル時間 | 16,060 ms | 
| コンパイル使用メモリ | 374,588 KB | 
| 実行使用メモリ | 9,516 KB | 
| 最終ジャッジ日時 | 2024-09-16 15:31:03 | 
| 合計ジャッジ時間 | 18,090 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 17 | 
ソースコード
use proconio::input;
use std::collections::HashMap;
fn main () {
    input! {
        n: u64,
        q: u64,
        mut a: [u64; n],
    }
    let acopy = a.clone();
    a.sort_by(|&a, &b| b.cmp(&a));
    a.dedup();
    let d =  a.iter()
        .enumerate()
        .map(|(i, &x)| {
            (x, i as u64)
        })
        .collect::<HashMap<u64, u64>>();
    //println!("{:?}", d);
    let mut count : Vec<u64> = vec![0; d.len()];
    for &v in &acopy {
        let l = *d.get(&v).unwrap();
        count[l as usize] += 1;
    }
    let count: Vec<u64> = count.iter()
        .scan(0, |sum, &x| {
            *sum += x;
            Some(*sum)
        })
        .collect();
    //println!("{:?}", count);
    for _ in 0..q {
        input! {
            x: u64, 
            y: u64,
        }
        let x = acopy[(x-1) as usize];
        let y = acopy[(y-1) as usize];
        //println!("x: {}, y: {}", x, y);
        let x = *d.get(&x).unwrap();
        let y = *d.get(&y).unwrap();
        //println!("x: {}, y: {}", x, y);
        println!("{}", 
            if y == 0 || count[(y-1) as usize] < count[x as usize]{0}
            else {count[(y-1) as usize] - count[x as usize]});
    }
}
            
            
            
        