fork download
  1. #include <iostream>
  2. #include "vector"
  3. #include "algorithm"
  4. #include "map"
  5. using namespace std;
  6. map < char , long long > sandw , have , price;
  7. long long money ;
  8. bool valid(long long md){
  9. long long b = sandw['B'] * md , s = sandw['S'] *md , c = sandw['C'] *md;
  10. b-=have['B'];
  11. s-=have['S'];
  12. c-=have['C'];
  13. //cout << b << " " << s << " " << c << "\n";
  14. long long cost = 0;
  15. if (b > 0)cost += b*price['B'];
  16. if (s > 0)cost += s*price['S'];
  17. if (c > 0)cost += c*price['C'];
  18.  
  19. return cost <= money;
  20. }
  21. long long BS() {
  22. long long st = 1 , ed = 1e13+3 , md , ans;
  23. while (st <= ed) {
  24. md = (st + ed) / 2;
  25. if (valid (md)) {
  26. st = md + 1;
  27. ans = md;
  28. }
  29. else {
  30. ed = md -1;
  31. }
  32. }
  33. return ans ;
  34. }
  35. int main() {
  36. string s;
  37. cin >> s;
  38. for (int i =0 ; i < s.size() ; i ++){
  39. sandw[s[i]]++;
  40. }
  41. cin >> have['B'] >> have['S'] >> have['C'];
  42. cin >> price['B'] >> price['S'] >> price['C'];
  43.  
  44. cin >> money;
  45. cout << BS();
  46. return 0;
  47. }
  48.  
Success #stdin #stdout 0.01s 5292KB
stdin
Standard input is empty
stdout
10000000000003