Language: C++

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <stack>
#include <queue>
#include <set>
#include <map>
using namespace std;
#define MOD @
#define ADD(X,Y) ((X) = ((X) + (Y)%MOD) % MOD)
typedef long long i64; typedef vector<int> ivec; typedef vector<string> svec;

char S[505050];
int N, Q;
int L[101010], R[101010];
int dp[505050][27];

/*
int uf[505050];

int root(int p)
{
	return uf[p] < 0 ? p : (uf[p] = root(uf[p]));
}
void join(int p, int q)
{
	p = root(p);
	q = root(q);
	if (p != q) {
		uf[p] += uf[q];
		uf[q] = p;
	}
}
*/
vector<int> ch[505050];
int lf[505050], rg[505050];
int idx;

void visit(int p)
{
	if (lf[p] != -1) return;
	lf[p] = idx++;
	for (int q : ch[p]) visit(q);
	rg[p] = idx;
}

int main()
{
	scanf("%s%d", S, &Q);
	N = strlen(S);
	for (int i = 0; i < Q; ++i) {
		scanf("%d%d", L + i, R + i);
		--L[i];
	}
	for (int i = N - 1; i >= 0; --i) {
		for (int j = 0; j <= 26; ++j) {
			dp[i][j] = N + 10;
		}
		dp[i][S[i] - 'a'] = i + 1;
		for (int j = 1; j <= 26; ++j) {
			if (dp[i][j - 1] < N) {
				int ij = dp[i][j - 1];
				dp[i][j] = min(dp[i][j], dp[ij][j - 1]);
			}
		}
			int i26 = dp[i][26];
			for (int j = 0; j <= 26; ++j) {
				
				if (j > 0 && dp[i][j - 1] < N) {
					int ij = dp[i][j - 1];
					dp[i][j] = min(dp[i][j], dp[ij][j - 1]);
				}
				
				if (dp[i][26] < N) {
					if (dp[i26][j] <= N) {
						dp[i][j] = min(dp[i][j], dp[i26][j]);
					}
				}
			}
		}
	}
//	for (int i = 0; i < N; ++i) printf("%d: %d\n", i, dp[i][26]);
	for (int i = 0; i < N; ++i) if (dp[i][26] <= N) {
		ch[dp[i][26]].push_back(i);
	}
	idx = 0;
	for (int i = 0; i <= N; ++i) lf[i] = -1;
	for (int i = N; i >= 0; --i) visit(i);

	for (int i = 0; i < Q; ++i) {
		int l = L[i], r = R[i];
		bool isok = lf[r] <= lf[l] && lf[l] <= rg[r];
		puts(isok ? "Yes" : "No");
	}
	return 0;
}


Compiler output:
a.cc:87:9: error: expected unqualified-id before 'for'
   87 |         for (int i = 0; i < N; ++i) if (dp[i][26] <= N) {
      |         ^~~
a.cc:87:25: error: 'i' does not name a type
   87 |         for (int i = 0; i < N; ++i) if (dp[i][26] <= N) {
      |                         ^
a.cc:87:32: error: expected unqualified-id before '++' token
   87 |         for (int i = 0; i < N; ++i) if (dp[i][26] <= N) {
      |                                ^~
a.cc:90:9: error: 'idx' does not name a type
   90 |         idx = 0;
      |         ^~~
a.cc:91:9: error: expected unqualified-id before 'for'
   91 |         for (int i = 0; i <= N; ++i) lf[i] = -1;
      |         ^~~
a.cc:91:25: error: 'i' does not name a type
   91 |         for (int i = 0; i <= N; ++i) lf[i] = -1;
      |                         ^
a.cc:91:33: error: expected unqualified-id before '++' token
   91 |         for (int i = 0; i <= N; ++i) lf[i] = -1;
      |                                 ^~
a.cc:92:9: error: expected unqualified-id before 'for'
   92 |         for (int i = N; i >= 0; --i) visit(i);
      |         ^~~
a.cc:92:25: error: 'i' does not name a type
   92 |         for (int i = N; i >= 0; --i) visit(i);
      |                         ^
a.cc:92:33: error: expected unqualified-id before '--' token
   92 |         for (int i = N; i >= 0; --i) visit(i);
      |                                 ^~
a.cc:94:9: error: expected unqualified-id before 'for'
   94 |         for (int i = 0; i < Q; ++i) {
      |         ^~~
a.cc:94:25: error: 'i' does not name a type
   94 |         for (int i = 0; i < Q; ++i) {
      |                         ^
a.cc:94:32: error: expected unqualified-id before '++' token
   94 |         for (int i = 0; i < Q; ++i) {
      |                                ^~
a.cc:99:9: error: expected unqualified-id before 'return'
   99 |         return 0;
      |         ^~~~~~
a.cc:100:1: error: expected declaration before '}' token
  100 | }
      | ^