Submission #148402

# Submission time Handle Problem Language Result Execution time Memory
148402 2019-09-01T04:18:17 Z CHT를 사랑하는 모임(#3587, moonrabbit2, Retro3014, gs18115) HicCup (FXCUP4_hiccup) C++17
0 / 100
1000 ms 384 KB
#include "hiccup.h"

#include <bits/stdc++.h>

#define all(v) (v).begin(), (v).end()
#define sortv(v) sort(all(v))
#define uniqv(v) (v).erase(unique(all(v)), (v).end())
#define pb push_back
#define FI first
#define SE second
#define lb lower_bound
#define ub upper_bound
#define mp make_pair
#define test 1
#define TEST if(test)

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;

const int MOD = 1000000007; // 998244353
const int INF = 2e9;
const ll INFLL = 1e18;
const int MAX_N = 1;


int cnt, N;
string str;
vector<int> v;

bool chk(int x){
	bool chk = false;
	while(!v.empty())	v.pop_back();
	cnt = 0;
	for(int i=0; i<N; i++){
		if(str[i]=='H'){
			cnt++;
		}else if(str[i]=='C'){
			if(cnt==0){
				return false;
			}
			cnt--;
			v.pb(x);
			chk = true;
		}else{
			if(!v.empty()){
				int k = v.back(); v.pop_back();
				k--;
				if(k>0){
					v.pb(k);
				}
			}else{
				if(!chk)	return false;
			}
		}
	}
	if(v.empty())	return true;
	return false;
}

int HicCup(string S) {
	str = S;
	N = S.size();
	int s = -1, e = S.size()-1, m;
	while(s<e){
		m = (s+e)/2+1;
		if(chk(m)){
			s = m;
		}else{
			e = m-1;
		}
	} 
	return s;
}
# Verdict Execution time Memory Grader output
1 Execution timed out 1099 ms 384 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1099 ms 384 KB Time limit exceeded
2 Halted 0 ms 0 KB -