fork download
  1. #include <cstdio>
  2. #include <iostream>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. int main(){
  8.  
  9. int N;
  10. long long C;
  11. long long ans=0ll;
  12.  
  13. int a[105];
  14. int b[105];
  15. int x[105];
  16. int need[105];
  17. long long mixpie=0ll;
  18.  
  19. scanf("%d %lld",&N,&C);
  20.  
  21. for(int i=0;i<N;i++){
  22. scanf("%d",&a[i]);
  23. }
  24. for(int i=0;i<N;i++){
  25. scanf("%d",&b[i]);
  26. }
  27. for(int i=0;i<N;i++){
  28. scanf("%d",&x[i]);
  29. mixpie+=(long long)x[i];
  30. }
  31.  
  32. while(1){
  33. for(int i=0;i<N;i++){
  34. if(x[i]>b[i]){need[i]=x[i]-b[i];b[i]=0;}
  35. else{b[i]-=x[i];need[i]=0;}
  36. }
  37. long long sum=0ll;
  38. for(int i=0;i<N;i++){
  39. sum+=(long long)need[i]*a[i];
  40. }
  41. if(sum>C){break;}
  42. C-=sum;
  43. ans+=mixpie;
  44. int maxbi=-1;
  45. for(int i=0;i<N;i++){
  46. maxbi=max(maxbi,b[i]);
  47. }
  48. if(maxbi==0){break;}
  49. }
  50.  
  51. long long k=0ll;
  52.  
  53. for(int i=0;i<N;i++){
  54. k+=(long long)(a[i]*x[i]);
  55. }
  56.  
  57. ans+=(C/k)*mixpie;
  58.  
  59. cout<<ans<<endl;
  60.  
  61.  
  62. return 0;
  63. }
Success #stdin #stdout 0.01s 5392KB
stdin
2 100
2
8
5
5
1
1
stdout
30