fork download
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. int n;
  5. scanf("%d", &n); // jumlah barang
  6.  
  7. int weight[n], value[n];
  8. for (int i = 0; i < n; i++) scanf("%d", &weight[i]);
  9. for (int i = 0; i < n; i++) scanf("%d", &value[i]);
  10.  
  11. int capacity;
  12. scanf("%d", &capacity);
  13.  
  14. // Hitung rasio nilai per berat
  15. double ratio[n];
  16. for (int i = 0; i < n; i++) ratio[i] = (double)value[i] / weight[i];
  17.  
  18. // Urutkan barang berdasarkan rasio tertinggi
  19. for (int i = 0; i < n - 1; i++) {
  20. for (int j = 0; j < n - i - 1; j++) {
  21. if (ratio[j] < ratio[j + 1]) {
  22. double tmp = ratio[j]; ratio[j] = ratio[j + 1]; ratio[j + 1] = tmp;
  23. int tw = weight[j]; weight[j] = weight[j + 1]; weight[j + 1] = tw;
  24. int tv = value[j]; value[j] = value[j + 1]; value[j + 1] = tv;
  25. }
  26. }
  27. }
  28.  
  29. double totalValue = 0.0;
  30. int itemCount = 0;
  31. int remaining = capacity;
  32.  
  33. for (int i = 0; i < n; i++) {
  34. if (weight[i] <= remaining) {
  35. totalValue += value[i];
  36. remaining -= weight[i];
  37. itemCount++;
  38. } else {
  39. totalValue += ratio[i] * remaining;
  40. itemCount++;
  41. break;
  42. }
  43. }
  44.  
  45. // Keluaran dua angka (bisa diatur sesuai kebutuhan: jumlah barang dan nilai total dibulatkan)
  46. printf("%d %d\n", itemCount, (int)totalValue);
  47. return 0;
  48. }
  49.  
Success #stdin #stdout 0.01s 5324KB
stdin
5 
5 4 7 8 10 
10 5 7 12 8 
20
stdout
4 30