Submission #62106239
Source Code Expand
use proconio::{input, marker::Usize1}; /* f(L, R)を削除するときに、 a_iを下端として削除する回数(a_iの寄与)を考える。 a_iを下端として削除する回数は、 j<iかつa_j=a_i - 1なるjの最大値(存在しなければ0), k>iかつa_k=a_i - 1なるkの最小値(存在しなければn)を用いて(i-j)*(k-i)で求められる。 ただし、 3 4 4 3 のような場合、4 4を重複して数えてしまうので、 左端についてはl<iかつa_l=a_iなるlの最大値(存在しなければ0)を求めて、 min(i-j, i-l)*(k-i)で求められる。 */ fn main() { input! { n: usize, a: [usize; n], } let mut v = vec![vec![]; n+1]; let mut idxes = vec![None; n+1]; for (i, &ai) in a.iter().enumerate() { v[ai].push(i); if idxes[ai].is_none() { idxes[ai] = Some(0); } } let mut ans = 0; let mut last_seen = vec![None; n+1]; for (i, &ai) in a.iter().enumerate() { let mut l = if let Some(idx) = last_seen[ai-1] { idx as i64 } else { -1 }; l = l.max( if let Some(idx) = last_seen[ai] { idx } else { -1 } ); let r = if let Some(idx) = idxes[ai-1] { v[ai-1][idx] as i64 } else { n as i64 }; if idxes[ai].unwrap() + 1 == v[ai].len() { idxes[ai] = None; } else { idxes[ai] = Some(idxes[ai].unwrap()+1); } last_seen[ai] = Some(i as i64); ans += (i as i64 -l) * (r-i as i64); } println!("{}", ans); } pub trait VecLibs<T: std::cmp::Ord> { fn lower_bound(&self, elm: T) -> usize; fn upper_bound(&self, elm: T) -> usize; } impl<T: std::cmp::Ord> VecLibs<T> for Vec<T> { fn lower_bound(&self, elm: T) -> usize { let mut left = 0; let mut right = self.len(); while left < right { let mid = (left + right) / 2; if self[mid] < elm { left = mid + 1; } else { right = mid; } } left } fn upper_bound(&self, elm: T) -> usize { let mut left = 0; let mut right = self.len(); while left < right { let mid = (left + right) / 2; if self[mid] <= elm { left = mid + 1; } else { right = mid; } } left } }
Submission Info
Submission Time | |
---|---|
Task | F - Double Sum 3 |
User | ardRiriy |
Language | Rust (rustc 1.70.0) |
Score | 525 |
Code Size | 2538 Byte |
Status | AC |
Exec Time | 57 ms |
Memory | 36692 KiB |
Compile Error
warning: unused import: `marker::Usize1` --> src/main.rs:1:23 | 1 | use proconio::{input, marker::Usize1}; | ^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 525 / 525 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_handmade_00.txt, 01_handmade_01.txt, 01_handmade_02.txt, 02_permutation_00.txt, 02_permutation_01.txt, 02_permutation_02.txt, 02_permutation_03.txt, 02_permutation_04.txt, 02_permutation_05.txt, 02_permutation_06.txt, 02_permutation_07.txt, 02_permutation_08.txt, 02_permutation_09.txt, 02_permutation_10.txt, 02_permutation_11.txt, 03_random_00.txt, 03_random_01.txt, 03_random_02.txt, 03_random_03.txt, 03_random_04.txt, 03_random_05.txt, 03_random_06.txt, 03_random_07.txt, 03_random_08.txt, 03_random_09.txt, 03_random_10.txt, 03_random_11.txt, 03_random_12.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00.txt | AC | 1 ms | 2064 KiB |
00_sample_01.txt | AC | 0 ms | 1808 KiB |
00_sample_02.txt | AC | 0 ms | 2064 KiB |
01_handmade_00.txt | AC | 0 ms | 2016 KiB |
01_handmade_01.txt | AC | 13 ms | 15804 KiB |
01_handmade_02.txt | AC | 28 ms | 36692 KiB |
02_permutation_00.txt | AC | 13 ms | 12344 KiB |
02_permutation_01.txt | AC | 18 ms | 15768 KiB |
02_permutation_02.txt | AC | 48 ms | 35936 KiB |
02_permutation_03.txt | AC | 43 ms | 31576 KiB |
02_permutation_04.txt | AC | 50 ms | 33988 KiB |
02_permutation_05.txt | AC | 52 ms | 36676 KiB |
02_permutation_06.txt | AC | 57 ms | 36576 KiB |
02_permutation_07.txt | AC | 49 ms | 36520 KiB |
02_permutation_08.txt | AC | 51 ms | 36592 KiB |
02_permutation_09.txt | AC | 54 ms | 36572 KiB |
02_permutation_10.txt | AC | 28 ms | 36548 KiB |
02_permutation_11.txt | AC | 28 ms | 36532 KiB |
03_random_00.txt | AC | 6 ms | 6444 KiB |
03_random_01.txt | AC | 7 ms | 7540 KiB |
03_random_02.txt | AC | 21 ms | 17348 KiB |
03_random_03.txt | AC | 7 ms | 7328 KiB |
03_random_04.txt | AC | 13 ms | 11832 KiB |
03_random_05.txt | AC | 44 ms | 31500 KiB |
03_random_06.txt | AC | 45 ms | 31444 KiB |
03_random_07.txt | AC | 46 ms | 31488 KiB |
03_random_08.txt | AC | 44 ms | 31612 KiB |
03_random_09.txt | AC | 47 ms | 31500 KiB |
03_random_10.txt | AC | 3 ms | 4776 KiB |
03_random_11.txt | AC | 6 ms | 7904 KiB |
03_random_12.txt | AC | 6 ms | 7504 KiB |