結果

問題 No.1471 Sort Queries
コンテスト
ユーザー ID 21712
提出日時 2026-05-24 16:25:34
言語 Go
(1.26.1)
コンパイル:
env GOCACHE=/tmp go build _filename_
実行:
./Main
結果
AC  
実行時間 84 ms / 2,000 ms
コード長 780 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 12,624 ms
コンパイル使用メモリ 275,700 KB
実行使用メモリ 7,972 KB
最終ジャッジ日時 2026-05-24 16:25:53
合計ジャッジ時間 16,968 ms
ジャッジサーバーID
(参考情報)
judge2_1 / judge1_1
純コード判定待ち
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 37
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

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個以上になった時点のアルファベットが答え

*/
0