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. long long cost = 0;
  14. if (b > 0)cost += b*price['B'];
  15. if (s > 0)cost += s*price['S'];
  16. if (c > 0)cost += c*price['C'];
  17.  
  18. return cost <= money;
  19. }
  20. long long BS() {
  21. long long st = 1 , ed = 1e12+3 , md , ans;
  22. while (st <= ed) {
  23. md = (st + ed) / 2;
  24. if (valid (md)) {
  25. st = md + 1;
  26. ans = md;
  27. }
  28. else {
  29. ed = md -1;
  30. }
  31. }
  32. return ans ;
  33. }
  34. int main() {
  35. string s;
  36. cin >> s;
  37. for (int i =0 ; i < s.size() ; i ++){
  38. sandw[s[i]]++;
  39. }
  40. cin >> have['B'] >> have['S'] >> have['C'];
  41. cin >> price['B'] >> price['S'] >> price['C'];
  42.  
  43. cin >> money;
  44. cout << BS();
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 0.01s 5292KB
stdin
Standard input is empty
stdout
1000000000003