結果
| 問題 | No.3705 ビバ子とマカロン (Bibako and Macaron) |
| コンテスト | |
| ユーザー |
norioc
|
| 提出日時 | 2026-09-22 11:17:13 |
| 言語 | Rust (1.97.1 + proconio + num + itertools + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 1,335 ms / 3,000 ms |
| + 657µs | |
| コード長 | 1,591 bytes |
| 記録 | |
| コンパイル時間 | 4,508 ms |
| コンパイル使用メモリ | 206,716 KB |
| 実行使用メモリ | 27,084 KB |
| 最終ジャッジ日時 | 2026-09-22 11:18:10 |
| 合計ジャッジ時間 | 44,895 ms |
|
ジャッジサーバーID (参考情報) |
judge5_0 / judge1_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 小課題1 | 10 % | AC * 5 |
| 小課題2 | 30 % | AC * 8 |
| 小課題3 | 60 % | AC * 15 |
| 合計 | 100 点 |
ソースコード
#![allow(non_snake_case, unused_imports)]
use std::collections::{BinaryHeap, HashMap, HashSet};
use ac_library::{Additive, Min, Segtree};
use proconio::{input, marker::Usize1, marker::Chars};
use itertools::Itertools;
#[allow(unused_macros)]
macro_rules! d {
( $( $x:expr ),* $(,)? ) => {
eprintln!(
concat!( $( stringify!($x), "={:?} " ),* ),
$( $x ),*
);
};
}
#[allow(dead_code)]
fn yn(b: bool) -> &'static str {
if b { "Yes" } else { "No" }
}
fn grid_overlap(a: (usize, usize), b: (usize, usize)) -> Option<(usize, usize)> {
if a.0 <= b.0 && b.0 <= a.1 {
Some((b.0, a.1.min(b.1)))
} else if b.0 <= a.0 && a.0 <= b.1 {
Some((a.0, b.1.min(a.1)))
} else {
None
}
}
fn main() {
input! {
N: usize,
A: [Usize1; N],
Q: usize,
}
let freq = A.iter().counts();
let mut segt = Segtree::<Min<usize>>::from(vec![0; N]);
for (&k, v) in freq.into_iter() {
d!(k, v);
segt.set(k, v);
}
for _ in 0..Q {
input! {
L1: Usize1,
R1: Usize1,
L2: Usize1,
R2: Usize1,
}
let ans = if let Some((l, r)) = grid_overlap((L1, R1), (L2, R2)) {
let a = segt.prod(L1..=R1) >= 1;
let b = segt.prod(L2..=R2) >= 1;
let c = segt.prod(l..=r) >= 2;
a && b && c
} else {
let a = segt.prod(L1..=R1) >= 1;
let b = segt.prod(L2..=R2) >= 1;
a && b
};
println!("{}", yn(ans));
}
}
norioc