用前缀和维护五个答案即可。

#include <bits/stdc++.h>
using namespace std;
int a[1000012][5];
int main()
{
	string s;
	cin >> s;
	int n = s.size();
	s = ' ' + s;
	for (int i = 1; i <= n; i++)
	{
		if (s[i] == 'l') a[i][0] = 1;
		if (s[i] == 'u') a[i][1] = 1;
		if (s[i] == 'o') a[i][2] = 1;
		if (s[i] == 'g') a[i][3] = 1;
		if (s[i] == 'u' && s[i - 1] == 'u') a[i][4] = 1;
	}
	for (int i = 1; i <= n; i++)
		for (int j = 0; j <= 4; j++)
			a[i][j] += a[i - 1][j];
	int q;
	cin >> q;
	while (q--)
	{
		int l, r;
		cin >> l >> r;
		cout << a[r][0] - a[l - 1][0] << ' ';
		cout << a[r][1] - a[l - 1][1] << ' ';
		cout << a[r][2] - a[l - 1][2] << ' ';
		cout << a[r][3] - a[l - 1][3] << ' ';
		cout << a[r][4] - a[l][4] << endl;
	}
	return 0;
}