結果
| 問題 | No.3389 k-Days Later |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-11-28 10:02:56 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,072 bytes |
| コンパイル時間 | 11,705 ms |
| コンパイル使用メモリ | 399,728 KB |
| 実行使用メモリ | 11,280 KB |
| 最終ジャッジ日時 | 2025-11-28 21:02:54 |
| 合計ジャッジ時間 | 22,809 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 22 WA * 6 |
ソースコード
#![allow(unused)]
#![allow(non_snake_case)]
#![allow(dead_code)]
pub fn bsearch_irange<F>(mut l: usize, mut r: usize, f: F) -> usize
where
F: Fn(usize) -> bool,
{
while l < r {
let m = l + (r - l) / 2;
if f(m) {
r = m;
} else {
l = m + 1;
}
}
l
}
fn main() {
let input_str = std::io::read_to_string(std::io::stdin()).unwrap();
let mut input = input_str.split_whitespace();
let mut read_int = ||->usize {input.next().unwrap().parse().unwrap_or(0)};
let N = read_int();
let D :Vec<usize> = (0..N).map(|_| read_int()).collect();
let mut S = vec![0;N+1];
for i in 1..=N{
S[i] = S[i-1]+D[i-1];
}
let Q = read_int();
for _ in 0..Q{
let (y,m,d,mut k) = (read_int(),read_int(),read_int(),read_int());
k += S[m-1]+d; //年の始まりに揃える
let a = y+k/S[N];
k %= S[N];
let b = bsearch_irange(1,N+1,|x| S[x] >= k);
let c = k-S[b-1];
println!("{} {} {}",a,b,c);
}
}