use proconio::{ input, marker::{Chars, Usize1}, }; // https://maguro.dev/blog/debug-macro/ #[allow(unused_macros)] macro_rules! debug { ($($a:expr),* $(,)*) => { #[cfg(debug_assertions)] eprintln!(concat!($("| ", stringify!($a), " = {:?} "),*, "|"), $(&$a),*); }; } fn main() { input! { n: usize, q: usize, s: Chars, } let mut csum = vec![vec![0; 26]; n + 1]; for i in 0..n { for j in 0..26 { csum[i + 1][j] += csum[i][j]; } csum[i + 1][(s[i] as u8 - b'a') as usize] += 1; } for _ in 0..q { input! { l: Usize1, r: usize, x: usize } let mut chars = vec![0; 26]; for i in 0..26 { chars[i] = csum[r][i] - csum[l][i]; } debug!(chars, s[l..r]); let mut cnt = 0; for i in 0..26 { cnt += chars[i]; if x <= cnt { println!("{}", (b'a' + i as u8) as char); break; } } } }