message (1)
message (1)
h>
int gn;
int va[maxN];
long long pw[30];
int a[maxN];
void build_sqrt() {
if (gn == 0) {
blk_sz = 1;
num_blks = 0;
return;
}
blk_sz = sqrt(gn);
if (blk_sz == 0) blk_sz = 1;
num_blks = (gn + blk_sz - 1) / blk_sz;
blk_s[b_idx] -= pw[oval];
blk_s[b_idx] += pw[nval];
int i = qL;
while (i <= qR) {
int b_idx = (i - 1) / blk_sz;
int L_blk = b_idx * blk_sz + 1; // Start of current block
int R_blk = min((b_idx + 1) * blk_sz, gn); // End of current block
void solve () {
int Q, X;
cin >> gn >> Q >> X;
pw[0] = 1;
for (int i = 1; i <= 26; ++ i ) {
pw[i] = pw[i-1] * 2;
}
string s_str;
cin >> s_str;
int len = qR - qL + 1;
if (len == 1) {
long long PL = pw[va[qL]];
if (TQ == PL) {
cout << "YES\n";
} else {
cout << "NO\n";
}
} else {
long long PR = pw[va[qR]];
long long PRm1 = pw[va[qR-1]];
if (len == 2) {
if (TQ == (PR - PRm1)) {
cout << "YES\n";
} else {
cout << "NO\n";
}
} else {
long long targetT = TQ + PRm1 - PR;
if (targetT % gW != 0) {
cout << "NO\n";
} else {
long long sumWg = sumW / gW;
long long targetTg = targetT / gW;
signed main () {
cin.tie (nullptr) -> sync_with_stdio (false);
if (fopen (task".inp", "r")) {
freopen (task".inp", "r", stdin);
freopen (task".out", "w", stdout);
}
int t = 1;
//cin >> t;
while (t --) {
solve ();
}
return 0;
}