100582024-03-25 20:34:28111Nemzetközi Rántott Hús Fesztiválcpp17Time limit exceeded 70/100574ms364764 KiB
#include <bits/stdc++.h>
using namespace std;

// #define int long long

char bf[11000000];
int bfp=0;

void wc(char c) {
	bf[bfp++] = c;
}

void wu(int i) {
	int x = 1;
	int c = 1;
	while (x <= i / 10) {
		x *= 10;
		c++;
	}
	while (c--) {
		int d = i / x;
		wc('0' + d);
		i -= d * x;
		i *= 10;
	}
}

alignas(64) int tk[20][1000001],th[20][1000001];

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N;
	cin>>N;
	string S;
	cin>>S;
	vector<int>c(N+1),vk(N+1),vh(N+1),w(N+1),f(1);
	for(int i=0;i<N;i++){
		if(S[i]=='M'){
			f.push_back(i);
		}
		c[i+1]=c[i]+(S[i]!='K');
		vk[i+1]=(S[i]!='H'?vk[i]+1:vk[i]-1);
		vh[i+1]=(S[i]!='K'?vh[i]-1:vh[i]+1);
		w[i+1]=w[i]+(S[i]=='M');
	}
	f.push_back(N);
	for(int i=0;i<N+1;i++){
		tk[0][i]=vk[i];
		th[0][i]=vh[i];
	}
	for(int j=1;j<20;j++){
		for(int l=0,r=1<<j-1;r<N+1;l++,r++){
			tk[j][l]=min(tk[j-1][l],tk[j-1][r]);
		}
	}
	for(int j=1;j<20;j++){
		for(int l=0,r=1<<j-1;r<N+1;l++,r++){
			th[j][l]=min(th[j-1][l],th[j-1][r]);
		}
	}
	auto qk=[&](int l,int r)->int{
		int i=__lg(r-l);
		return min(tk[i][l],tk[i][r-(1<<i)]);
	};
	auto qh=[&](int l,int r)->int{
		int i=__lg(r-l);
		return min(th[i][l],th[i][r-(1<<i)]);
	};
	for(int i=0;i<N;i++){
		int b=qk(i+1,N+1)-vk[i]>=0;
		if(b){
			int l=1,h=w[N]-w[i]+1;
			while(l<h){
				int m=(l+h)/2;
				int j=f[w[i]+m];
				int x=vk[j]-vk[i];
				if(qh(j,N+1)-vh[j]+x>=0){
					h=m;
				}
				else{
					l=m+1;
				}
			}
			wu(c[N]-c[i]-(l-1));wc(' ');
		}
		else{
			int l=i+1,h=N;
			while(l<h){
				int m=(l+h)/2;
				if(qk(i+1,m+1)-vk[i]>=0){
					l=m+1;
				}
				else{
					h=m;
				}
			}
			wu((l-1-i)/2);wc(' ');
		}
	}
	wc('\n');
	fwrite(bf,sizeof(char),bfp,stdout);
	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms2000 KiB
2Accepted4ms3712 KiB
subtask27/7
3Accepted3ms2492 KiB
4Accepted3ms2500 KiB
subtask39/9
5Accepted4ms4144 KiB
6Accepted4ms4096 KiB
7Accepted4ms4104 KiB
subtask414/14
8Accepted411ms345572 KiB
9Accepted419ms346364 KiB
10Accepted419ms346320 KiB
11Accepted391ms346532 KiB
12Accepted310ms350488 KiB
13Accepted317ms351828 KiB
14Accepted379ms348064 KiB
15Accepted430ms347404 KiB
subtask511/11
16Accepted3ms3972 KiB
17Accepted3ms4240 KiB
18Accepted3ms4196 KiB
subtask629/29
19Accepted4ms5572 KiB
20Accepted4ms5696 KiB
21Accepted4ms5860 KiB
22Accepted4ms5816 KiB
subtask70/30
23Accepted483ms354452 KiB
24Time limit exceeded574ms178692 KiB
25Accepted481ms354788 KiB
26Time limit exceeded561ms180080 KiB
27Time limit exceeded574ms181424 KiB
28Time limit exceeded556ms181480 KiB
29Time limit exceeded560ms182376 KiB
30Accepted477ms357700 KiB
31Time limit exceeded570ms181524 KiB
32Time limit exceeded544ms362900 KiB
33Time limit exceeded503ms363860 KiB
34Accepted428ms364376 KiB
35Accepted391ms364764 KiB
36Accepted312ms351480 KiB
37Accepted314ms353020 KiB
38Accepted345ms349196 KiB
39Accepted432ms348536 KiB
40Accepted441ms364672 KiB