Submission #61624943
Source Code Expand
use ac_library::{Max, Segtree};
#[allow(unused_imports)]
use proconio::{input, marker::Usize1};
fn main() {
input!{
n: usize,
mut a: [u64; n],
q: usize,
}
a.push(INF);
let mut seg :Segtree<Max<usize>> = Segtree::new(n);
for (i, ai) in a[0..n].iter().enumerate() {
seg.set(i, a.lower_bound(*ai * 2) - i);
}
let check = |l: usize, r: usize, k: usize| -> bool {
let val = seg.prod(l..l+k);
l+k-1+val.max(k)<=r
};
for _ in 0..q {
input! {
l: Usize1,
r: Usize1
}
// 無駄にlogがつくが、シンプルな二分探索をする
let mut ok = 0;
let mut ng = n-l;
while ng-ok>1 {
let mid = (ok+ng)/2;
if check(l, r, mid) {
ok = mid;
} else {
ng = mid;
}
}
println!("{}", ok);
}
}
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 static INF: u64 = 1e18 as u64;
pub static DI: &[usize] = &[0, !0, 0, 1, !0, 1, !0, 1];
pub static DJ: &[usize] = &[!0, 0, 1, 0, !0, !0, 1, 1];
pub static DC: &[char] = &['L', 'U', 'R', 'D'];
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 |
G - Simultaneous Kagamimochi 2 |
User |
ardRiriy |
Language |
Rust (rustc 1.70.0) |
Score |
575 |
Code Size |
4081 Byte |
Status |
AC |
Exec Time |
485 ms |
Memory |
11660 KiB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
575 / 575 |
Status |
|
|
Set Name |
Test Cases |
Sample |
00_sample_00.txt, 00_sample_01.txt |
All |
00_sample_00.txt, 00_sample_01.txt, 01_random_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, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 02_handmade_40.txt, 02_handmade_41.txt, 02_handmade_42.txt, 02_handmade_43.txt, 02_handmade_44.txt, 02_handmade_45.txt |
Case Name |
Status |
Exec Time |
Memory |
00_sample_00.txt |
AC |
0 ms |
1876 KiB |
00_sample_01.txt |
AC |
0 ms |
2088 KiB |
01_random_02.txt |
AC |
463 ms |
11628 KiB |
01_random_03.txt |
AC |
463 ms |
11592 KiB |
01_random_04.txt |
AC |
462 ms |
11628 KiB |
01_random_05.txt |
AC |
465 ms |
11584 KiB |
01_random_06.txt |
AC |
465 ms |
11532 KiB |
01_random_07.txt |
AC |
376 ms |
9804 KiB |
01_random_08.txt |
AC |
290 ms |
4196 KiB |
01_random_09.txt |
AC |
418 ms |
11336 KiB |
01_random_10.txt |
AC |
461 ms |
11592 KiB |
01_random_11.txt |
AC |
429 ms |
11652 KiB |
01_random_12.txt |
AC |
459 ms |
11628 KiB |
01_random_13.txt |
AC |
465 ms |
11492 KiB |
01_random_14.txt |
AC |
430 ms |
11612 KiB |
01_random_15.txt |
AC |
459 ms |
11656 KiB |
01_random_16.txt |
AC |
402 ms |
11552 KiB |
01_random_17.txt |
AC |
485 ms |
11468 KiB |
01_random_18.txt |
AC |
483 ms |
11556 KiB |
01_random_19.txt |
AC |
482 ms |
11564 KiB |
01_random_20.txt |
AC |
482 ms |
11608 KiB |
01_random_21.txt |
AC |
481 ms |
11656 KiB |
01_random_22.txt |
AC |
432 ms |
11544 KiB |
01_random_23.txt |
AC |
434 ms |
11564 KiB |
01_random_24.txt |
AC |
433 ms |
11660 KiB |
01_random_25.txt |
AC |
433 ms |
11632 KiB |
01_random_26.txt |
AC |
432 ms |
11616 KiB |
01_random_27.txt |
AC |
471 ms |
11456 KiB |
01_random_28.txt |
AC |
470 ms |
11312 KiB |
01_random_29.txt |
AC |
471 ms |
11484 KiB |
01_random_30.txt |
AC |
471 ms |
11480 KiB |
01_random_31.txt |
AC |
471 ms |
11312 KiB |
01_random_32.txt |
AC |
376 ms |
7348 KiB |
01_random_33.txt |
AC |
319 ms |
4852 KiB |
01_random_34.txt |
AC |
278 ms |
4124 KiB |
01_random_35.txt |
AC |
473 ms |
11196 KiB |
01_random_36.txt |
AC |
474 ms |
11132 KiB |
01_random_37.txt |
AC |
471 ms |
11064 KiB |
01_random_38.txt |
AC |
472 ms |
11080 KiB |
01_random_39.txt |
AC |
473 ms |
11268 KiB |
02_handmade_40.txt |
AC |
180 ms |
2916 KiB |
02_handmade_41.txt |
AC |
179 ms |
2816 KiB |
02_handmade_42.txt |
AC |
187 ms |
3096 KiB |
02_handmade_43.txt |
AC |
462 ms |
10860 KiB |
02_handmade_44.txt |
AC |
393 ms |
11612 KiB |
02_handmade_45.txt |
AC |
392 ms |
10076 KiB |