100492024-03-25 20:09:59111Nemzetközi Rántott Hús Fesztiválcpp17Futási hiba 0/100592ms359464 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 hiba3ms2104 KiB
2Futási hiba4ms4064 KiB
subtask20/7
3Futási hiba3ms2380 KiB
4Futási hiba3ms2524 KiB
subtask30/9
5Futási hiba4ms4472 KiB
6Futási hiba3ms4712 KiB
7Futási hiba4ms4928 KiB
subtask40/14
8Futási hiba462ms349424 KiB
9Időlimit túllépés592ms175880 KiB
10Időlimit túllépés578ms176016 KiB
11Futási hiba460ms349748 KiB
12Időlimit túllépés549ms176252 KiB
13Futási hiba453ms349836 KiB
14Időlimit túllépés578ms176432 KiB
15Futási hiba455ms349900 KiB
subtask50/11
16Futási hiba3ms4004 KiB
17Futási hiba3ms3808 KiB
18Futási hiba3ms3832 KiB
subtask60/29
19Futási hiba4ms5576 KiB
20Futási hiba3ms5936 KiB
21Futási hiba3ms5884 KiB
22Futási hiba4ms6208 KiB
subtask70/30
23Időlimit túllépés586ms178696 KiB
24Időlimit túllépés583ms178808 KiB
25Időlimit túllépés574ms178992 KiB
26Futási hiba469ms355696 KiB
27Futási hiba460ms356080 KiB
28Időlimit túllépés550ms180072 KiB
29Futási hiba465ms357204 KiB
30Időlimit túllépés582ms179324 KiB
31Időlimit túllépés579ms179708 KiB
32Futási hiba460ms358172 KiB
33Időlimit túllépés578ms181332 KiB
34Futási hiba458ms359432 KiB
35Futási hiba469ms359464 KiB
36Futási hiba449ms350984 KiB
37Futási hiba453ms351136 KiB
38Futási hiba449ms351100 KiB
39Futási hiba449ms350980 KiB
40Időlimit túllépés574ms181804 KiB