fork(1) download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. unsigned int iloscSkladnikow;
  8. cin >> iloscSkladnikow;
  9. unsigned int* dostepne1 = new unsigned int[iloscSkladnikow];
  10. unsigned int* dostepne2 = new unsigned int[iloscSkladnikow];
  11. unsigned int* makowiec = new unsigned int[iloscSkladnikow];
  12. unsigned int* keks = new unsigned int[iloscSkladnikow];
  13. for(unsigned int i = 0;i<iloscSkladnikow;++i)
  14. {
  15. cin >> dostepne1[i];
  16. dostepne2[i]=dostepne1[i];
  17. }
  18. for(unsigned int i = 0;i<iloscSkladnikow;++i)
  19. cin >> makowiec[i];
  20. for(unsigned int i = 0;i<iloscSkladnikow;++i)
  21. cin >> keks[i];
  22. unsigned int maxMakowcow1 = 0xFFFFFFFF, maxMakowcow2 = 0xFFFFFFFF;
  23. unsigned int maxKeksow1 = 0xFFFFFFFF, maxKeksow2 = 0xFFFFFFFF;
  24. for(unsigned int i = 0;i<iloscSkladnikow;++i) //ile mozna zrobic makowcow a ile keksow na poczatku
  25. {
  26. unsigned int minTerazMakowcow = 0xFFFFFFFF;
  27. unsigned int minTerazKeksow = 0xFFFFFFFF;
  28. if(makowiec[i]) minTerazMakowcow = dostepne1[i]/makowiec[i];
  29. if(keks[i]) minTerazKeksow = dostepne2[i]/keks[i];
  30. if(minTerazMakowcow < maxMakowcow1) maxMakowcow1 = minTerazMakowcow;
  31. if(minTerazKeksow < maxKeksow1) maxKeksow1 = minTerazKeksow;
  32. }
  33. for(unsigned int i=0;i<iloscSkladnikow;++i) //odejmujemy skladniki
  34. {
  35. dostepne1[i] -= makowiec[i]*maxMakowcow1;
  36. dostepne2[i] -= keks[i]*maxKeksow1;
  37. }
  38. for(unsigned int i = 0;i<iloscSkladnikow;++i) //ile mozna zrobic makowcow a ile keksow po zrobieniu poprzednich
  39. {
  40. unsigned int minTerazMakowcow = 0xFFFFFFFF;
  41. unsigned int minTerazKeksow = 0xFFFFFFFF;
  42. if(makowiec[i]) minTerazMakowcow = dostepne2[i]/makowiec[i];
  43. if(keks[i]) minTerazKeksow = dostepne1[i]/keks[i];
  44. if(minTerazMakowcow < maxMakowcow2) maxMakowcow2 = minTerazMakowcow;
  45. if(minTerazKeksow < maxKeksow2) maxKeksow2 = minTerazKeksow;
  46. }
  47. if(maxMakowcow1+maxKeksow2>maxMakowcow2+maxKeksow1) cout << maxMakowcow1+maxKeksow2;
  48. else cout << maxMakowcow2+maxKeksow1;
  49. return 0;
  50. }
  51.  
Success #stdin #stdout 0s 3032KB
stdin
3
5 4 8
2 1 3
1 2 2
stdout
3