Submission #148776

#TimeUsernameProblemLanguageResultExecution timeMemory
148776Dopatii (#200)HicCup (FXCUP4_hiccup)C++17
0 / 100
25 ms3456 KiB
#include "hiccup.h"
#include <bits/stdc++.h>
using namespace std;

int HicCup(std::string S) {
	int N = S.size();
    int nrH = 0, nrC = 0;
    for(auto i : S){
        if(i == '!' && (nrH == 0 || nrC == 0)) return -1;
        else if(i == 'H') ++nrH;
        else if(i == 'C'){
            ++nrC;
            if(nrC > nrH) return -1;
        }
    }

    int st = 0, dr = N;
    while(st <= dr){
        int mij = (st + dr) / 2;

        int nr = 0, f = 0;
        bool ok = true;
        for(int i = N - 1; i >= 0 ; --i){
            if(S[i] == '!') ++nr;
            else if(S[i] == 'C'){
                nr -= mij;
                if(f == 0 && nr > 0) nr = 0, f = 1;
            }

            if(nr < 0) {ok = false; break ;}

        }

        if(ok) st = mij + 1;
        else dr = mij - 1;
    }

	return dr;
}

#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...