Submission #149750

#TimeUsernameProblemLanguageResultExecution timeMemory
149750Avengers (#200)HicCup (FXCUP4_hiccup)C++17
24 / 100
40 ms15104 KiB
#include <bits/stdc++.h> #define fr(i, n, m) for(int i = (n); i < (m); i ++) #define pb push_back #define st first #define nd second #define pq priority_queue #define all(x) begin(x), end(x) using namespace std; typedef long long ll; #include "hiccup.h" int HicCup(std::string s) { int n = s.size(); int cnt[n]; int c = 0; for(int i = n - 1; i >= 0; i --){ if(s[i] == '!') c ++; cnt[i] = c; if(s[i] == 'C') c = 0; else if(s[i] == 'H' && c > 0) return -1; } if(c > 0) return -1; stack <int> S; S.push(0); int sums[n + 1]; int nums[n + 1]; memset(sums, 0, sizeof(sums)); memset(nums, 0, sizeof(nums)); int ANS = n; fr(i, 0, n){ if(s[i] == 'H') S.push(i + 1); else if(s[i] == 'C'){ if((int)(S.size()) == 1) return -1; int id = S.top(); S.pop(); sums[(int)S.top()] += cnt[i]; nums[(int)S.top()] ++; if(nums[id] > 0) ANS = min(ANS, sums[id] / nums[id]); } } if((int)S.size() > 1)return -1; if(nums[0] > 0)ANS = min(ANS, sums[0] / nums[0]); return ANS; } /* int main() { cout << HicCup("HC!!HHC!HC!!!C!!!"); return 0; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...