Submission #148976

#TimeUsernameProblemLanguageResultExecution timeMemory
148976맞WATLE (#200)HicCup (FXCUP4_hiccup)C++17
100 / 100
82 ms4352 KiB
#include "hiccup.h"
#include <bits/stdc++.h>
using namespace std;

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

int N;
string S;

bool decide(int X)
{
    int i, j;

    vector<int> ST;
    for(i=0; i<N; i++)
    {
        if(S[i]=='H') ST.push_back(-1);
        else if(S[i]=='C')
        {
            while(!ST.empty() && ST.back()==0) ST.pop_back();
            if(ST.empty()) return false;
            if(ST.back()!=-1) return false;
            else ST.back()=X;
        }
        else
        {
            if(ST.empty()) return false;
            if(ST.back()==-1) return false;
            if(ST.back()>0) ST.back()--;
            if(ST.size()>1 && ST[ST.size()-1]==0 && ST[ST.size()-2]>=0) ST.pop_back();
        }
    }
    while(!ST.empty() && ST.back()==0) ST.pop_back();
    if(!ST.empty()) return false;
    return true;
}

int HicCup(string _S)
{
    int i, j;
    S=_S; N=S.size();

    int lo=-1, hi=N;
    while(lo+1<hi)
    {
        int mid=lo+hi>>1;
        if(decide(mid)) lo=mid;
        else hi=mid;
    }
    return lo;
}

Compilation message (stderr)

hiccup.cpp: In function 'bool decide(int)':
hiccup.cpp:14:12: warning: unused variable 'j' [-Wunused-variable]
     int i, j;
            ^
hiccup.cpp: In function 'int HicCup(std::__cxx11::string)':
hiccup.cpp:48:19: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
         int mid=lo+hi>>1;
                 ~~^~~
hiccup.cpp:42:9: warning: unused variable 'i' [-Wunused-variable]
     int i, j;
         ^
hiccup.cpp:42:12: warning: unused variable 'j' [-Wunused-variable]
     int i, j;
            ^
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...