Submission #148515

# Submission time Handle Problem Language Result Execution time Memory
148515 2019-09-01T04:34:58 Z CHT를 사랑하는 모임(#3587, moonrabbit2, Retro3014, gs18115) HicCup (FXCUP4_hiccup) C++17
24 / 100
150 ms 4352 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;


ll cnt, N;
string str;
ll sum = 0;

bool chk(ll x){
	bool chk = false;
	cnt = 0;
	sum = 0;
	for(int i=0; i<N; i++){
		if(str[i]=='H'){
			cnt++;
		}else if(str[i]=='C'){
			if(cnt==0){
				return false;
			}
			cnt--;
			sum += x;
			chk = true;
		}else{
			if(sum!=0){
				sum--;
			}else{
				if(!chk)	return false;
			}
		}
	}
	if(cnt==0 && sum==0)	return true;
	return false;
}

int HicCup(string S) {
	str = S;
	N = S.size();
	/*for(int i=0; i<N; i++){
		if(S[i]=='H'){
			cnt++;
		}else if(S[i]=='C'){
			if(cnt==0){
				return -1;
			}
			cnt--;
		}
	}
	if(cnt!=0){
		return -1;
	}*/
	int s = 0, e = S.size()-1, m;
	while(s<e){
		m = (s+e)/2+1;
		if(chk((ll)m)){
			s = m;
		}else{
			e = m-1;
		}
	} 
	if(!chk(s)){
		return -1;
	}
	return s;
}
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 9 ms 384 KB Output is correct
5 Correct 149 ms 4352 KB Output is correct
6 Correct 14 ms 4352 KB Output is correct
7 Correct 15 ms 4352 KB Output is correct
8 Correct 142 ms 4352 KB Output is correct
9 Correct 150 ms 4352 KB Output is correct
10 Correct 13 ms 4352 KB Output is correct
11 Correct 6 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 9 ms 384 KB Output is correct
5 Correct 149 ms 4352 KB Output is correct
6 Correct 14 ms 4352 KB Output is correct
7 Correct 15 ms 4352 KB Output is correct
8 Correct 142 ms 4352 KB Output is correct
9 Correct 150 ms 4352 KB Output is correct
10 Correct 13 ms 4352 KB Output is correct
11 Correct 40 ms 4352 KB Output is correct
12 Correct 37 ms 4224 KB Output is correct
13 Correct 18 ms 4352 KB Output is correct
14 Correct 6 ms 384 KB Output is correct
15 Incorrect 79 ms 4352 KB Output isn't correct
16 Halted 0 ms 0 KB -