제출 #150301

#제출 시각아이디문제언어결과실행 시간메모리
150301Avengers (#200)HicCup (FXCUP4_hiccup)C++17
24 / 100
86 ms38776 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" vector<int> nums[1000006]; vector<int> v; bool ok(int x, int id){ v = nums[id]; int p2 = v.size() - 1; int p1 = 0; int N = v.size(); int r = N - 1; fr(i, 0, N){ if(v[i] < x){ for(int j = r; j > i; j --){ if(v[j] - x >= x - v[i]){ v[i] = x; v[j] -= x; r = j; break; } } if(v[i] < x) return false; } } return true; } 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 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(); nums[(int)S.top()].pb(cnt[i]); if(nums[id].empty()) continue; int k = 0; for(int b = ANS / 2; b >= 1; b /= 2){ while(k + b <= ANS && ok(k + b, id)) k += b; } ANS = min(ANS, k); } } if((int)S.size() > 1)return -1; if(!nums[0].empty()){ int k = 0; for(int b = (ANS+1) / 2; b >= 1; b /= 2){ while(k + b <= ANS && ok(k + b, 0)) k += b; } ANS = min(ANS, k); } return ANS; }/* int main(){ cout << HicCup("HHC!C!!"); }*/

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

hiccup.cpp: In function 'bool ok(int, int)':
hiccup.cpp:17:13: warning: unused variable 'p2' [-Wunused-variable]
         int p2 = v.size() - 1;
             ^~
hiccup.cpp:18:13: warning: unused variable 'p1' [-Wunused-variable]
         int p1 = 0;
             ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...