Ваш код в настоящее время делает гораздо больше, чем необходимо. В псевдокоде вы выполняете
while(q--)
{
read p
freq[character] = determine count of any character up to position p
print freq[character at position p]
}
. Вы повторяете весь процесс подсчета того, как часто каждый символ появляется перед позицией p
для каждого отдельного запроса, но затем вы используете информацию только для одного отдельного символа. Это не совсем эффективно. Вместо этого вы должны сделать:
freq[position] = determine occurences of character at each position
while(q--)
{
read p
print freq[p]
}
Первую часть можно выполнить, пройдя входную строку один раз, а затем для каждого запроса вам просто нужно найти результат в таблице.