Submission #148464

#TimeUsernameProblemLanguageResultExecution timeMemory
148464graneli (#200)HicCup (FXCUP4_hiccup)C++17
24 / 100
29 ms4352 KiB
#include "hiccup.h"
#include <bits/stdc++.h>
#define F first
#define S second
#define mp make_pair
#define pb push_back
//#define ll __int128
#define ll long long
#define LEFT(a) ((a)<<1)
#define RIGHT(a) (LEFT(a) + 1)
#define MID(a,b) ((a+b)>>1)
#define MAX(a,b) ((a)>(b)?(a):(b))
#define MIN(a,b) ((a)<(b)?(a):(b))
#define y1 y122
using namespace std;

const int N = 1000005;

int n;
int x, y, z;
int num;
string s;

stack < int > St;


int HicCup(string S) {
	int n = (int)S.size();
	int x = 0, y = 0, z = 0;
	S = "#" + S;
	for (int i = 1; i <= n; i++){
        if (S[i] == 'H')
            x++;
        else if (S[i] == 'C')
            y++;
        else
            z++;
	}
	if (x != y)
        return -1;
    if (z % x != 0)
        return -1;
    num = z / x;
    s = "#HC";
    for (int i = 0; i < num; i++)
        s += "!";
    int m = num + 2;
    for (int i = 1; i <= n; i++){
        if (S[i] == 'H'){
            St.push (1);
            continue;
        }
        if (St.size() == 0)
            return -1;
        x = St.top() + 1;
        if (S[i] != s[x])
            return -1;
        St.pop();
        if (x < m)
            St.push (x);
    }
    if (St.size() == 0)
        return num;
    return -1;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...