Submission #149204

# Submission time Handle Problem Language Result Execution time Memory
149204 2019-09-01T05:57:35 Z 20190901(#3597, tongnamuu, jf297, upple1) HicCup (FXCUP4_hiccup) C++17
24 / 100
433 ms 20420 KB
#include "hiccup.h"
#include <vector>

using namespace std;


bool Check(string str, int mid)
{
	vector<pair<char, int>> stk;

	int hCnt = 0;
	int cCnt = 0;
	bool isMake = false;
	for (int i = 0; i < str.size(); i++)
	{
		if (str[i] == 'H')
		{
			stk.push_back({ 'H', -1 });
			hCnt++;
		}
		else if (str[i] == 'C')
		{
			if (hCnt > cCnt)
				stk.push_back({ 'C', 0 });
			else
				return false;
			cCnt++;
		}
		else
		{
			if (stk.empty() && !isMake)
				return false;
			if (stk.back().first == 'H')
				return false;

			stk.push_back({ '!', stk.back().second + 1 });
		}

		if (stk.back().second == mid)
		{
			for (int i = 0; i < mid + 2; i++)
			{
				if (stk.empty())
					return false;

				if (stk.back().first == 'C')
					cCnt--;
				else if (stk.back().first == 'H')
					hCnt--;
				stk.pop_back();
			}
			isMake = true;
		}
	}

	for (int i = 0; i < stk.size(); i++)
	{
		if (stk[i].first != '!')
			return false;
	}
	return true;
}

int HicCup(string S)
{
	int lo = -1;
	int hi = (int)S.size();


	while (lo + 1 < hi)
	{
		int mid = (lo + hi) >> 1;
		if (Check(S, mid))
		{
			lo = mid;
		}
		else
		{
			hi = mid;
		}
	}

	return lo;
}

Compilation message

hiccup.cpp: In function 'bool Check(std::__cxx11::string, int)':
hiccup.cpp:14:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < str.size(); i++)
                  ~~^~~~~~~~~~~~
hiccup.cpp:56:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < stk.size(); i++)
                  ~~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 6 ms 384 KB Output is correct
3 Correct 5 ms 256 KB Output is correct
4 Correct 17 ms 1396 KB Output is correct
5 Correct 433 ms 20416 KB Output is correct
6 Correct 15 ms 4340 KB Output is correct
7 Correct 16 ms 4268 KB Output is correct
8 Correct 411 ms 20380 KB Output is correct
9 Correct 427 ms 20420 KB Output is correct
10 Correct 16 ms 4140 KB Output is correct
11 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 6 ms 384 KB Output is correct
3 Correct 5 ms 256 KB Output is correct
4 Correct 17 ms 1396 KB Output is correct
5 Correct 433 ms 20416 KB Output is correct
6 Correct 15 ms 4340 KB Output is correct
7 Correct 16 ms 4268 KB Output is correct
8 Correct 411 ms 20380 KB Output is correct
9 Correct 427 ms 20420 KB Output is correct
10 Correct 16 ms 4140 KB Output is correct
11 Correct 83 ms 7912 KB Output is correct
12 Correct 131 ms 11316 KB Output is correct
13 Correct 35 ms 5788 KB Output is correct
14 Correct 6 ms 384 KB Output is correct
15 Correct 19 ms 4556 KB Output is correct
16 Correct 6 ms 384 KB Output is correct
17 Correct 5 ms 384 KB Output is correct
18 Correct 9 ms 932 KB Output is correct
19 Incorrect 257 ms 20380 KB Output isn't correct
20 Halted 0 ms 0 KB -