Submission #151589

# Submission time Handle Problem Language Result Execution time Memory
151589 2019-09-03T15:31:13 Z leduykhongngu HicCup (FXCUP4_hiccup) C++17
24 / 100
37 ms 15208 KB
#include <cstdio>
#include <iostream>
#include <cstring>
#include <stack>
#include <cassert>
#include <vector>
#include <algorithm>
using namespace std;

string S = "";
int n;
int pre[1000005], sum[1000005];
vector<int> End;
bool Check(int lim)
{
    int last = S.length() - 1;
    int cnt = 0;
    for (int R : End) {
        cnt += sum[last] - sum[R - 1];
        if (cnt < lim) return false;
        cnt -= lim;
        last = R;
    }
    return true;
}

int HicCup(std::string tmp)
{
    S = tmp;
    stack<int> st;
    for (int i = 0; i < tmp.length(); ++i) {
        sum[i] = sum[i-1];
        if (S[i] == '!') {
            if (i > 0 && S[i-1] == 'H') return -1; 
            ++sum[i];
            continue;
        }
        if (S[i] == 'H') {
            st.push(i);
        }
        else {
            assert(S[i] == 'C');
            if (st.size() == 0) return -1;
            int L = st.top();
            pre[i] = L;
            st.pop();
            End.push_back(i);
        }
    }
    if (st.size()) return -1;
    reverse(End.begin(), End.end());
    int lef = 0, rig = S.length(), ans = -1;
    while (lef <= rig)
    {
        int mid = (lef + rig)/2;
        if (Check(mid))
        {
            ans = max(ans, mid);
            lef = mid + 1;
        }
        else rig = mid - 1;
    }
    return ans;
}

Compilation message

hiccup.cpp: In function 'int HicCup(std::__cxx11::string)':
hiccup.cpp:31:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < tmp.length(); ++i) {
                     ~~^~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 3 ms 1096 KB Output is correct
5 Correct 37 ms 15208 KB Output is correct
6 Correct 11 ms 5240 KB Output is correct
7 Correct 11 ms 5240 KB Output is correct
8 Correct 34 ms 15208 KB Output is correct
9 Correct 33 ms 15080 KB Output is correct
10 Correct 10 ms 5240 KB Output is correct
11 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 3 ms 1096 KB Output is correct
5 Correct 37 ms 15208 KB Output is correct
6 Correct 11 ms 5240 KB Output is correct
7 Correct 11 ms 5240 KB Output is correct
8 Correct 34 ms 15208 KB Output is correct
9 Correct 33 ms 15080 KB Output is correct
10 Correct 10 ms 5240 KB Output is correct
11 Correct 14 ms 7284 KB Output is correct
12 Correct 15 ms 8312 KB Output is correct
13 Correct 13 ms 5752 KB Output is correct
14 Correct 2 ms 296 KB Output is correct
15 Correct 10 ms 5368 KB Output is correct
16 Incorrect 2 ms 376 KB Output isn't correct
17 Halted 0 ms 0 KB -