Submission #148574

#TimeUsernameProblemLanguageResultExecution timeMemory
148574모현보유국 (#200)HicCup (FXCUP4_hiccup)C++17
24 / 100
28 ms4352 KiB
#include "hiccup.h"
#include <bits/stdc++.h>
using namespace std;

stack<int> stk;
string s;

bool chk(int x){
	int stk = 0;
	int save = 0;
	for(int i=0; i<s.size(); i++){
		if(s[i] == '!'){
			save++; continue;
		}
		if(s[i] == 'C'){
			stk++;
			save -= x;
			if(save < 0) return 0;
			continue;
		}
		if(stk <= 0) return 0;
		else stk--;
	}
	return save >= 0;
}

bool valid(){
	int cnt = 0;
	for(auto i : s){
		if(i == 'C') cnt++;
		else{
			if(cnt == 0) return 0;
			cnt--;
		}
	}
	return cnt == 0;
}

int HicCup(string S) {
	reverse(S.begin(), S.end());
	s = S;
	int n = s.size();
	if(!valid()){
		return -1;
	}
	int ans = -1;
	int l = 0, r = 1000000;
	while(l <= r){
		int m = l + r >> 1;
		if(chk(m)){
			ans = m;
			l = m + 1;
		}else{
			r = m - 1;
		}
	}
	return ans;
}

Compilation message (stderr)

hiccup.cpp: In function 'bool chk(int)':
hiccup.cpp:11:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0; i<s.size(); i++){
               ~^~~~~~~~~
hiccup.cpp: In function 'int HicCup(std::__cxx11::string)':
hiccup.cpp:49:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   int m = l + r >> 1;
           ~~^~~
hiccup.cpp:42:6: warning: unused variable 'n' [-Wunused-variable]
  int n = s.size();
      ^
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...