This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// #include "hiccup.h"
using namespace std;
#include "bits/stdc++.h"
 
const int N=1e6+1;
vector<int> adj[N];
int cnt[N];
int ans;
bool bad;
 
void dfs(int x){
	int e=0, c=0;
	for(int i=adj[x].size()-1; i>=0; i--){
		int k=adj[x][i];
		e+=cnt[k];
		c++;
		ans=min(ans, e/c);
		dfs(k);
	}
}
 
int HicCup(std::string S) {
	int n = S.size();
	ans=1e9;
	S='-'+S;
	stack<int> par;
	par.push(0);
	int prv=-1;
	for(int i=1; i<=n; i++){
		if(S[i]=='!'){
			if(prv==-1 || S[i-1]=='H') return -1;
			cnt[prv]++;
			continue;
		}
		if(S[i]=='C'){
			if(par.size()<2) return -1;
			int p=par.top(); par.pop();
			prv=p;
			adj[par.top()].push_back(p);
		}
		else{
			par.push(i);
		}
	}
	// for(int i=0; i<=n; i++){
	// 	if(cnt[i]) cout << "cnt[" << i << "] " << cnt[i] << "\n";
	// }
	if(par.size()!=1) return -1;
 
	dfs(0);
	return ans;
}
 
// int main(){
// 	string s;
// 	cin >> s;
// 	cout << HicCup(s);
// }
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |