100502024-03-25 20:11:28111Nemzetközi Rántott Hús Fesztiválcpp17Futási hiba 0/100612ms358928 KiB
#include <bits/stdc++.h>
using namespace std;

// #define int long long

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);
	vector<array<int,20>>tk(N+1),th(N+1);
	for(int i=0;i<N+1;i++){
		tk[i][0]=vk[i];
		th[i][0]=vh[i];
	}
	for(int j=1;j<20;j++){
		for(int l=0,r=1<<j-1;r<N+1;l++,r++){
			tk[l][j]=min({tk[l][j-1],tk[r][j-1]});
			th[l][j]=min({th[l][j-1],th[r][j-1]});
		}
	}
	auto qk=[&](int l,int r)->int{
		int i=__lg(r-l);
		return min({tk[l][i],tk[r-(1<<i)][i]});
	};
	auto qh=[&](int l,int r)->int{
		int i=__lg(r-l);
		return min({th[l][i],th[r-(1<<i)][i]});
	};
	return 1;
	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;
				}
			}
			cout<<c[N]-c[i]-(l-1)<<' ';
		}
		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;
				}
			}
			cout<<(l-1-i)/2<<' ';
		}
	}
	cout<<'\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Futási hiba3ms1960 KiB
2Futási hiba3ms3816 KiB
subtask20/7
3Futási hiba3ms2304 KiB
4Futási hiba3ms2508 KiB
subtask30/9
5Futási hiba4ms4428 KiB
6Futási hiba3ms4368 KiB
7Futási hiba3ms4368 KiB
subtask40/14
8Futási hiba465ms348828 KiB
9Időlimit túllépés538ms348976 KiB
10Futási hiba474ms349056 KiB
11Futási hiba460ms349064 KiB
12Futási hiba456ms349152 KiB
13Futási hiba456ms349152 KiB
14Futási hiba453ms349144 KiB
15Időlimit túllépés578ms175900 KiB
subtask50/11
16Futási hiba3ms3648 KiB
17Futási hiba3ms3664 KiB
18Futási hiba3ms3896 KiB
subtask60/29
19Futási hiba4ms5492 KiB
20Futási hiba4ms5572 KiB
21Futási hiba3ms5572 KiB
22Futási hiba3ms5828 KiB
subtask70/30
23Időlimit túllépés612ms178288 KiB
24Futási hiba472ms353428 KiB
25Időlimit túllépés574ms178548 KiB
26Futási hiba469ms355116 KiB
27Futási hiba465ms355724 KiB
28Futási hiba462ms356252 KiB
29Futási hiba470ms356796 KiB
30Időlimit túllépés587ms179148 KiB
31Futási hiba467ms355432 KiB
32Időlimit túllépés575ms181116 KiB
33Futási hiba462ms358928 KiB
34Időlimit túllépés564ms181520 KiB
35Időlimit túllépés584ms181716 KiB
36Időlimit túllépés588ms177460 KiB
37Időlimit túllépés573ms177376 KiB
38Időlimit túllépés572ms177548 KiB
39Időlimit túllépés586ms177568 KiB
40Időlimit túllépés586ms181812 KiB