package main import . "fmt" func main() { var n,q int var s string Scan(&n,&q,&s) alpha := make([][]int, 26) for i := range alpha { alpha[i] = make([]int, n+1) } for i, b := range []byte(s) { alpha[int(b)-'a'][i+1] = 1 } for _, al := range alpha { for i := 0; i < len(al)-1; i++ { al[i+1] += al[i] } } ans := []byte{} for ; q > 0; q-- { var l,r, x int Scan(&l,&r,&x) cnt := 0 for b, al := range alpha { cnt += al[r]-al[l-1] if cnt >= x { ans = append(ans, byte(b+'a'), '\n') break } } } Print(string(ans)) } /* 考察 アルファベットごとに累積和を保持して クエリごとに範囲内のアルファベット順にカウントしていってXi個以上になった時点のアルファベットが答え */