Submission #61549627
Source Code Expand
#[allow(unused_imports)]
use proconio::input;
fn main() {
input!{
n: usize,
a: [u64; n]
}
let mut ans = 0;
for i in 0..n {
let k = a[i]*2;
let idx = a.lower_bound(k);
ans += n-idx;
}
println!("{}", ans);
}
pub trait Debuggable {
fn debug_string(&self) -> String;
}
impl<T: std::fmt::Debug + std::fmt::Display> Debuggable for Vec<T> {
fn debug_string(&self) -> String {
use itertools::Itertools;
use std::iter::repeat;
if let Some(max_size) = self.iter()
.enumerate()
.map(|(i, x)| (format!("{:?}", x).len()).max(format!("{:?}", i).len()))
.max() {
let mut idx = String::from("idx |");
let mut val = String::from("val |");
for (i, xi) in self.iter().enumerate() {
idx.push_str(
&format!(" {:>w$} |", i, w=max_size)
);
val.push_str(
&format!(" {:>w$} |", xi, w=max_size)
);
}
format!("{}\n{}\n{}\n", idx, repeat('-').take(idx.len()).join(""), val)
} else {
format!("idx | \nval |\n")
}
}
}
impl<T: std::fmt::Debug + std::fmt::Display> Debuggable for std::collections::BTreeSet<T> {
fn debug_string(&self) -> String {
use itertools::Itertools;
format!("{{ {} }}", self.iter().join(", "))
}
}
impl<T, U> Debuggable for std::collections::BTreeMap<T, U>
where T: std::fmt::Debug + std::fmt::Display, U: std::fmt::Debug + std::fmt::Display
{
fn debug_string(&self) -> String {
use itertools::Itertools;
format!(
"{{\n{}\n }}", self.iter()
.map(|(k, v)| format!("{k} -> {v}, "))
.join("\n")
)
}
}
// lg! マクロの定義
#[macro_export]
macro_rules! lg {
($val:expr) => {
#[cfg(feature = "local")]
{
{
use Debuggable;
let val = &$val;
eprintln!(
"[{}:{}] {} = \n{}",
file!(),
line!(),
stringify!($val),
val.debug_string()
);
val
}
}
}
}
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 |
C - Various Kagamimochi |
User |
ardRiriy |
Language |
Rust (rustc 1.70.0) |
Score |
300 |
Code Size |
3222 Byte |
Status |
AC |
Exec Time |
30 ms |
Memory |
10580 KiB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
300 / 300 |
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_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 02_handmade_23.txt, 02_handmade_24.txt, 02_handmade_25.txt, 02_handmade_26.txt, 02_handmade_27.txt, 02_handmade_28.txt, 02_handmade_29.txt |
Case Name |
Status |
Exec Time |
Memory |
00_sample_00.txt |
AC |
1 ms |
1800 KiB |
00_sample_01.txt |
AC |
1 ms |
1900 KiB |
00_sample_02.txt |
AC |
0 ms |
2064 KiB |
01_random_03.txt |
AC |
30 ms |
10472 KiB |
01_random_04.txt |
AC |
30 ms |
10376 KiB |
01_random_05.txt |
AC |
30 ms |
10368 KiB |
01_random_06.txt |
AC |
30 ms |
10528 KiB |
01_random_07.txt |
AC |
30 ms |
10464 KiB |
01_random_08.txt |
AC |
30 ms |
10368 KiB |
01_random_09.txt |
AC |
30 ms |
10480 KiB |
01_random_10.txt |
AC |
16 ms |
6340 KiB |
01_random_11.txt |
AC |
9 ms |
4556 KiB |
01_random_12.txt |
AC |
5 ms |
3272 KiB |
01_random_13.txt |
AC |
22 ms |
8168 KiB |
01_random_14.txt |
AC |
22 ms |
8044 KiB |
01_random_15.txt |
AC |
21 ms |
8216 KiB |
01_random_16.txt |
AC |
29 ms |
9260 KiB |
01_random_17.txt |
AC |
30 ms |
9228 KiB |
01_random_18.txt |
AC |
29 ms |
9236 KiB |
01_random_19.txt |
AC |
1 ms |
1912 KiB |
01_random_20.txt |
AC |
0 ms |
1868 KiB |
01_random_21.txt |
AC |
0 ms |
2008 KiB |
01_random_22.txt |
AC |
0 ms |
1940 KiB |
02_handmade_23.txt |
AC |
26 ms |
8660 KiB |
02_handmade_24.txt |
AC |
9 ms |
4392 KiB |
02_handmade_25.txt |
AC |
21 ms |
7308 KiB |
02_handmade_26.txt |
AC |
3 ms |
2496 KiB |
02_handmade_27.txt |
AC |
28 ms |
8948 KiB |
02_handmade_28.txt |
AC |
23 ms |
10580 KiB |
02_handmade_29.txt |
AC |
14 ms |
6668 KiB |