52442023-04-23 18:03:13szilNemzetközi Rántott Hús Fesztiválcpp14Időlimit túllépés 41/100600ms22560 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	ios::sync_with_stdio(0); cin.tie(0);
	int n; cin >> n;
	vector<char> v(n+1);
	bool mind = false;
	for (int i = 1; i <= n; i++) {
		cin >> v[i];
		if (v[i] == 'M') mind = true;
	}
	if (mind) {
		for (int i = 1; i <= n; i++) {
			int x = 0;
			for (int j = i; j <= n; j++) x += v[j] == 'M';
			int ans = 0;
			for (int j = 0; j <= x; j++){
				int left = j, res = 0, koret = 0;
				for(int k = i; k <= n; k++){
					if (v[k] == 'K') koret++;
					else if(v[k] == 'H') {
						if(koret == 0) break;
						res++; koret--;
					} else {
						if(left > 0){
							left--; koret++;
						} else {
							if(koret == 0) break;
							res++; koret--;
						}
					}
				}

				ans = max(ans, res);
			}
			cout << ans << " ";
		}
		cout << "\n";
	} else {
		vector<int> ans(n+2), next(n+2);
		ans[n+1] = 0;
		next[n+1] = n+1;
		for (int i = n; i >= 1; i--) {
			if (v[i] == 'H') {
				ans[i] = 0;
				next[i] = i;
				continue;
			}
			ans[i] = ans[i+1];
			if(next[i+1] == n+1){
				next[i] = n+1;
				continue;
			}
			ans[i]++;
			ans[i] += ans[next[i+1]+1];
			next[i] = next[next[i+1]+1];
		}
		for(int i = 1; i <= n; i++)cout<<ans[i]<<" ";
		cout<<endl;
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1700 KiB
2Időlimit túllépés600ms1184 KiB
subtask27/7
3Elfogadva3ms2088 KiB
4Elfogadva3ms2308 KiB
subtask39/9
5Elfogadva3ms2712 KiB
6Elfogadva3ms2892 KiB
7Elfogadva3ms3188 KiB
subtask414/14
8Elfogadva118ms20676 KiB
9Elfogadva119ms20816 KiB
10Elfogadva116ms20952 KiB
11Elfogadva118ms21188 KiB
12Elfogadva109ms21128 KiB
13Elfogadva111ms21360 KiB
14Elfogadva107ms21272 KiB
15Elfogadva107ms21524 KiB
subtask511/11
16Elfogadva13ms3992 KiB
17Elfogadva23ms4060 KiB
18Elfogadva20ms4060 KiB
subtask60/29
19Időlimit túllépés565ms4040 KiB
20Időlimit túllépés566ms4144 KiB
21Időlimit túllépés568ms4264 KiB
22Időlimit túllépés549ms4496 KiB
subtask70/30
23Időlimit túllépés580ms4880 KiB
24Időlimit túllépés570ms4840 KiB
25Időlimit túllépés563ms5012 KiB
26Időlimit túllépés527ms4908 KiB
27Időlimit túllépés560ms4780 KiB
28Időlimit túllépés554ms5016 KiB
29Időlimit túllépés547ms4900 KiB
30Időlimit túllépés549ms5016 KiB
31Időlimit túllépés564ms4924 KiB
32Időlimit túllépés570ms4952 KiB
33Időlimit túllépés537ms5060 KiB
34Időlimit túllépés566ms4984 KiB
35Időlimit túllépés566ms5076 KiB
36Elfogadva107ms22468 KiB
37Elfogadva111ms22560 KiB
38Elfogadva108ms22520 KiB
39Elfogadva108ms22516 KiB
40Időlimit túllépés552ms5032 KiB