#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
int N;
int cnt[ 26 ] [ 100001 ] ;
class Solution{
public :
vector< bool > canMakePaliQueries( string S, vector< vector< int >> & Q) {
int i, j, k;
vector< bool > res;
N = S.size ( ) ;
for ( i= 0 ; i< ( N) ; i++ ) {
S[ i] - = 'a' ;
}
for ( k= 0 ; k< ( 26 ) ; k++ ) {
cnt[ k] [ 0 ] = 0 ;
for ( i= 0 ; i< ( N) ; i++ ) {
cnt[ k] [ i+ 1 ] = cnt[ k] [ i] ;
if ( S[ i] == k) {
cnt[ k] [ i+ 1 ] ++ ;
}
}
}
for ( k= 0 ; k< ( Q.size ( ) ) ; k++ ) {
i = 0 ;
for ( j= 0 ; j< ( 26 ) ; j++ ) {
i + = ( cnt[ j] [ Q[ k] [ 1 ] + 1 ] - cnt[ j] [ Q[ k] [ 0 ] ] ) % 2 ;
}
if ( Q[ k] [ 2 ] >= i / 2 ) {
res.push_back ( true ) ;
}
else {
res.push_back ( false ) ;
}
}
return res;
}
}
;
// cLay varsion 20190830-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int N;
// int cnt[26][100001];
//
// class Solution {
// public:
// vector<bool> canMakePaliQueries(string S, vector<vector<int>>& Q) {
// int i, j, k;
// vector<bool> res;
//
// N = S.size();
// rep(i,N) S[i] -= 'a';
// rep(k,26){
// cnt[k][0] = 0;
// rep(i,N){
// cnt[k][i+1] = cnt[k][i];
// if(S[i]==k) cnt[k][i+1]++;
// }
// }
//
// rep(k,Q.size()){
// i = 0;
// rep(j,26) i += (cnt[j][Q[k][1]+1] - cnt[j][Q[k][0]]) % 2;
// if(Q[k][2] >= i / 2) res.push_back(true); else res.push_back(false);
// }
//
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KaW50IE47CmludCBjbnRbMjZdWzEwMDAwMV07CmNsYXNzIFNvbHV0aW9uewogIHB1YmxpYzoKICB2ZWN0b3I8Ym9vbD4gY2FuTWFrZVBhbGlRdWVyaWVzKHN0cmluZyBTLCB2ZWN0b3I8dmVjdG9yPGludD4+JiBRKXsKICAgIGludCBpLCBqLCBrOwogICAgdmVjdG9yPGJvb2w+IHJlczsKICAgIE4gPSBTLnNpemUoKTsKICAgIGZvcihpPTA7aTwoTik7aSsrKXsKICAgICAgU1tpXSAtPSAnYSc7CiAgICB9CiAgICBmb3Ioaz0wO2s8KDI2KTtrKyspewogICAgICBjbnRba11bMF0gPSAwOwogICAgICBmb3IoaT0wO2k8KE4pO2krKyl7CiAgICAgICAgY250W2tdW2krMV0gPSBjbnRba11baV07CiAgICAgICAgaWYoU1tpXT09ayl7CiAgICAgICAgICBjbnRba11baSsxXSsrOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgZm9yKGs9MDtrPChRLnNpemUoKSk7aysrKXsKICAgICAgaSA9IDA7CiAgICAgIGZvcihqPTA7ajwoMjYpO2orKyl7CiAgICAgICAgaSArPSAoY250W2pdW1Fba11bMV0rMV0gLSBjbnRbal1bUVtrXVswXV0pICUgMjsKICAgICAgfQogICAgICBpZihRW2tdWzJdID49IGkgLyAyKXsKICAgICAgICByZXMucHVzaF9iYWNrKHRydWUpOwogICAgICB9CiAgICAgIGVsc2V7CiAgICAgICAgcmVzLnB1c2hfYmFjayhmYWxzZSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXM7CiAgfQp9CjsKLy8gY0xheSB2YXJzaW9uIDIwMTkwODMwLTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gaW50IE47Ci8vIGludCBjbnRbMjZdWzEwMDAwMV07Ci8vIAovLyBjbGFzcyBTb2x1dGlvbiB7Ci8vIHB1YmxpYzoKLy8gICB2ZWN0b3I8Ym9vbD4gY2FuTWFrZVBhbGlRdWVyaWVzKHN0cmluZyBTLCB2ZWN0b3I8dmVjdG9yPGludD4+JiBRKSB7Ci8vICAgICBpbnQgaSwgaiwgazsKLy8gICAgIHZlY3Rvcjxib29sPiByZXM7Ci8vICAgICAKLy8gICAgIE4gPSBTLnNpemUoKTsKLy8gICAgIHJlcChpLE4pIFNbaV0gLT0gJ2EnOwovLyAgICAgcmVwKGssMjYpewovLyAgICAgICBjbnRba11bMF0gPSAwOwovLyAgICAgICByZXAoaSxOKXsKLy8gICAgICAgICBjbnRba11baSsxXSA9IGNudFtrXVtpXTsKLy8gICAgICAgICBpZihTW2ldPT1rKSBjbnRba11baSsxXSsrOwovLyAgICAgICB9Ci8vICAgICB9Ci8vIAovLyAgICAgcmVwKGssUS5zaXplKCkpewovLyAgICAgICBpID0gMDsKLy8gICAgICAgcmVwKGosMjYpIGkgKz0gKGNudFtqXVtRW2tdWzFdKzFdIC0gY250W2pdW1Fba11bMF1dKSAlIDI7Ci8vICAgICAgIGlmKFFba11bMl0gPj0gaSAvIDIpIHJlcy5wdXNoX2JhY2sodHJ1ZSk7IGVsc2UgcmVzLnB1c2hfYmFjayhmYWxzZSk7Ci8vICAgICB9Ci8vIAovLyAgICAgcmV0dXJuIHJlczsKLy8gICB9Ci8vIH07Cg==