Submission #151360

# Submission time Handle Problem Language Result Execution time Memory
151360 2019-09-02T14:29:19 Z apostoldaniel854 HicCup (FXCUP4_hiccup) C++17
24 / 100
19 ms 3324 KB
#include <bits/stdc++.h>
#include "hiccup.h"
using namespace std;

#define HOME1


const int N = 1e7;
int stk[1 + N];

bool check (int x, string &s) {
    int top = 0;
    for (int i = 0; i < s.size (); i++) {
        if (s[i] == 'H') {
            top++;
            stk[top] = 1;
        }
     //   cout << top << "\n";
        if (s[i] == 'C') {
            if (stk[top] != 1) return false;
            stk[top] = 2;
            if (x == 0)
                top--;
        }
        if (s[i] == '!' && top) {
            if (stk[top] < 2) continue;
            stk[top]++;
            if (stk[top] - 2 == x)
                top--;
        }
    }
    return top == 0;
}

bool c (string &s) {
    for (int i = 0; i < s.size (); i++) {
        if (s[i] == 'C') return true;
        if (s[i] == '!') return false;
    }
}

int HicCup (string s) {
    int l, r, ans;
    l = 0; r = s.size ();
    ans = -1;
    if (!c (s)) return -1;
    while (l <= r) {
        int mid = (l + r) / 2;
        if (check (mid, s)) ans = mid, l = mid + 1;
        else r = mid - 1;
    }
    return ans;
}
#ifdef HOME
int main() {
    cout << HicCup("HC!!HHC!HC!!!C!!!") << "\n";
    return 0;
}
#endif

Compilation message

hiccup.cpp: In function 'bool check(int, std::__cxx11::string&)':
hiccup.cpp:13:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < s.size (); i++) {
                     ~~^~~~~~~~~~~
hiccup.cpp: In function 'bool c(std::__cxx11::string&)':
hiccup.cpp:36:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < s.size (); i++) {
                     ~~^~~~~~~~~~~
hiccup.cpp:40:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 0 ms 252 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 3 ms 504 KB Output is correct
5 Correct 17 ms 3320 KB Output is correct
6 Correct 9 ms 3320 KB Output is correct
7 Correct 10 ms 3192 KB Output is correct
8 Correct 19 ms 3320 KB Output is correct
9 Correct 17 ms 3320 KB Output is correct
10 Correct 9 ms 3192 KB Output is correct
11 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 0 ms 252 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 3 ms 504 KB Output is correct
5 Correct 17 ms 3320 KB Output is correct
6 Correct 9 ms 3320 KB Output is correct
7 Correct 10 ms 3192 KB Output is correct
8 Correct 19 ms 3320 KB Output is correct
9 Correct 17 ms 3320 KB Output is correct
10 Correct 9 ms 3192 KB Output is correct
11 Correct 10 ms 3324 KB Output is correct
12 Correct 12 ms 3320 KB Output is correct
13 Correct 14 ms 3192 KB Output is correct
14 Correct 2 ms 256 KB Output is correct
15 Incorrect 16 ms 3308 KB Output isn't correct
16 Halted 0 ms 0 KB -