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. cout<<"sum="<<sum<<endl;
  42. if(sum==0ll || sum>C){break;}
  43. C-=sum;
  44. ans+=mixpie;
  45. int maxbi=-1;
  46. for(int i=0;i<N;i++){
  47. maxbi=max(maxbi,b[i]);
  48. }
  49. if(maxbi==0){break;}
  50. }
  51.  
  52. long long k=0ll;
  53.  
  54. for(int i=0;i<N;i++){
  55. k+=(long long)(a[i]*x[i]);
  56. }
  57.  
  58. cout<<(C/k)<<endl;
  59. cout<<mixpie<<endl;
  60.  
  61. ans+=(C/k)*mixpie;
  62.  
  63. cout<<ans<<endl;
  64.  
  65.  
  66. return 0;
  67. }
Success #stdin #stdout 0.01s 5516KB
stdin
2 100
2
8
5
5
1
1
stdout
sum=0
10
2
20