fork download
  1. #include <bits/stdc++.h>
  2. // v.erase( unique(all(v)) , v.end() ) -----> removes duplicates and resizes the vector as so
  3. using namespace std;
  4. #define ll long long
  5. #define lld long double
  6. const lld pi = 3.14159265358979323846;
  7. #define pb push_back
  8. #define pf push_front
  9. #define all(a) a.begin(),a.end()
  10. #define rall(a) a.rbegin(),a.rend()
  11. #define getunique(v) {sort(v.begin(), v.end()); v.erase(unique(v.begin(), v.end()), v.end());}
  12. constexpr int mod = (int)(1e9+7);
  13. #define log(x) (31^__builtin_clz(x)) // Easily calculate log2 on GNU G++ compilers
  14.  
  15.  
  16. int main()
  17. {ios_base::sync_with_stdio(0),cin.tie(0);
  18. string s;cin>>s;ll cntb=0,cnts=0,cntc=0;
  19. for(char c:s){
  20. if(c=='B')cntb++;
  21. else if(c=='S')cnts++;
  22. else cntc++;
  23. }
  24. ll nb,ns,nc;
  25. cin>>nb>>ns>>nc;
  26. ll pb,ps,pc;
  27. cin>>pb>>ps>>pc;
  28. ll r;cin>>r;
  29. ll en=1e15,st=0;ll ans=0;
  30. while(en>=st){
  31. ll mid=en-(en-st)/2;
  32. ll cost=0;
  33. if(nb<mid*cntb){
  34. cost+=(mid*cntb-nb)*pb;
  35. }
  36. if(nc<mid*cntc){
  37. cost+=(mid*cntc-nc)*pc;
  38. }
  39. if(ns<mid*cnts){
  40. cost+=(mid*cnts-ns)*ps;
  41. }
  42. if(cost<=r){
  43. ans=mid;st=mid+1;continue;
  44. }
  45. en=mid-1;
  46. }
  47. cout<<ans<<'\n';
  48.  
  49.  
  50.  
  51.  
  52.  
  53. return 0;
  54. }
  55. /*
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. */
Success #stdin #stdout 0.01s 5544KB
stdin
Standard input is empty
stdout
1000000000000000