제출 #150111

#제출 시각아이디문제언어결과실행 시간메모리
150111graneli (#200)HicCup (FXCUP4_hiccup)C++17
24 / 100
32 ms5248 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; string s; string S; stack < int > St; bool check (int num){ while (St.size() > 0) St.pop(); s = "#HC"; for (int i = 0; i < num; i++) s += "!"; int m = num + 2; bool ok = 0; for (int i = 1; i <= n; i++){ if (S[i] == 'H') St.push (0); if (St.size() == 0 && S[i] == 'C') return 0; if (St.size() == 0 && ok == 0) return 0; if (St.size() == 0) continue; x = St.top() + 1; if (S[i] != s[x]){ if (S[i] != '!' || ok == 0) return 0; continue; } St.pop(); if (x < m) St.push (x); else ok = 1; } if (St.size() == 0) return 1; return 0; } int HicCup(string str) { S = str; n = (int)S.size(); 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; int l = -1, r = z / x; while (l < r){ int mid = l + r + 1 >> 1; if (check (mid)) l = mid; else r = mid - 1; } /*bool ok = check (0); if (ok == 0) return -1;*/ return l; }

컴파일 시 표준 에러 (stderr) 메시지

hiccup.cpp: In function 'int HicCup(std::__cxx11::string)':
hiccup.cpp:76:25: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
         int mid = l + r + 1 >> 1;
                   ~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...