문제

링크

풀이

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
 
inline bool five(vector<int> &a) {
  if (a[5] <= 0) return false;
  int rem = 11; a[5]--;
  a[1] = max(0, a[1] - rem);
  return true;
}
 
inline bool four(vector<int> &a) {
  if (a[4] <= 0) return false;
  int rem = 20 - 4 * min(5, a[2]); a[4]--;
  a[2] = max(0, a[2] - 5);
  a[1] = max(0, a[1] - rem);
  return true;
}
 
inline bool three(vector<int> &a) {
  if (a[3] <= 0) return false;
  int rem = 36 - 9 * min(4, a[3]);
  a[3] = max(0, a[3] - 4);
  if (rem == 27) {
    rem -= 4 * min(5, a[2]);
    a[2] = max(0, a[2] - 5);
  } else if (rem == 18) {
    rem -= 4 * min(3, a[2]);
    a[2] = max(0, a[2] - 3);
  } else if (rem == 9) {
    rem -= 4 * min(1, a[2]);
    a[2] = max(0, a[2] - 1);
  }
  a[1] = max(0, a[1] - rem);
  return true;
}
 
inline bool two(vector<int> &a) {
  if (a[2] <= 0) return false;
  int rem = 36 - 4 * min(9, a[2]);
  a[2] = max(0, a[2] - 9);
  a[1] = max(0, a[1] - rem);
  return true;
}
 
inline bool one(vector<int> &a) {
  if (a[1] <= 0) return false;
  a[1] = max(0, a[1] - 36);
  return true;
}
 
void solve(void) {
  vector<int> a(7, 0);
  for (int i=1; i<=6; i++) cin >> a[i];
 
  int ans = a[6];
  while (five(a)) ans++;
  while (four(a)) ans++;
  while (three(a)) ans++;
  while (two(a)) ans++;
  while (one(a)) ans++;
  cout << ans;
}
 
int main(void) {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  
  solve();
  return 0;
}