Facebook
From krzysio, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 146
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <math.h>
  5. #include <iomanip>
  6. using namespace std;
  7.  
  8. int ilosc_zapytan;
  9. float tab_int[1000][1000];
  10. int i;
  11. int j;
  12. int k;
  13. int l;
  14. int x = 0;
  15. int tab_op[2][5];
  16. int max_rzeczy;
  17. int max_profit_temp = 0;
  18. int max_profit = 0;
  19. int cap_car;
  20. int masa_item=0;
  21.  
  22. int main()
  23. {
  24.         // wczytywanie liczb
  25.         cin >> ilosc_zapytan;
  26.  
  27.         for (i = 0; i < ilosc_zapytan; i++)
  28.         {
  29.                 int max_rzeczy = 15;
  30.  
  31.  
  32.                 // ilosc przedmiotów
  33.                 cin >> tab_int[i * 5][0];
  34.  
  35.                 // wartosc przedmiotow
  36.                 for (j = 0; j < tab_int[i * 5][0]; j++)
  37.                 {
  38.                         cin >> tab_int[i * 5 + 1][j];
  39.                 }
  40.  
  41.                 // masa przedmiotu
  42.                 for (k = 0; k < tab_int[i * 5][0]; k++)
  43.                 {
  44.                         cin >> tab_int[i * 5 + 2][k];
  45.                 }
  46.  
  47.                 // pojemnosc załadunkowa auta
  48.                 cin >> tab_int[i * 5 + 4][0];
  49.  
  50.                 // odejmowanie 5 zł
  51.                 for (j = 0; j < tab_int[i * 5][0]; j++)
  52.                 {
  53.                         if (tab_int[i * 5 + 2][j] > 100)
  54.                         {
  55.                                 tab_int[i * 5 + 1][j] = tab_int[i * 5 + 1][j] - 5;
  56.                         }
  57.                 }
  58.  
  59.                 // obliczanie oplacalnosci przedmiotu
  60.                 for (l = 0; l < tab_int[i * 5][0]; l++)
  61.                 {
  62.                         tab_int[i * 5 + 3][l] = tab_int[i * 5 + 1][l] / tab_int[i * 5 + 2][l];
  63.                 }
  64.  
  65.                 // zapis w tablicy opłacalności
  66.                 for (j = 0; j < tab_int[i * 5][0]; j++)
  67.                 {
  68.                         if (tab_int[i * 5 + 3][j] > 0)
  69.                         {
  70.                                 tab_op[0][x] = tab_int[i * 5 + 1][j];
  71.                                 tab_op[1][x] = tab_int[i * 5 + 2][j];
  72.                                 x++;
  73.                         }
  74.                 }
  75.  
  76.                 // sprawdzanie czy tablica opłacalności ma więcej elementów niż można wziąść
  77.                 if (max_rzeczy > x)
  78.                         max_rzeczy = x;
  79.  
  80.                 cap_car = tab_int[i * 5 + 4][0];
  81.                 max_profit_temp = 0;
  82.  
  83.  
  84.                 for (int variacja = 0; variacja < pow(2, 15); variacja++)
  85.                 {
  86.                         max_profit_temp = 0;
  87.                         masa_item = 0;
  88.                         for (int k = 0; k < x; k++) {
  89.                                 if ((variacja & k) == 1) {
  90.                                         max_profit_temp += tab_op[0][k];
  91.                                         masa_item += tab_op[1][k];
  92.                                        
  93.                                 }
  94.                        
  95.                         }
  96.                         if (max_profit_temp > max_profit && masa_item <= cap_car)
  97.                         {
  98.                                 max_profit = max_profit_temp;
  99.                         }
  100.                         cout << variacja << endl;
  101.                 }
  102.                        
  103.  
  104.         }
  105.  
  106.  
  107.         cout << max_profit << endl;
  108.        
  109.  
  110.         return 0;
  111. }
  112.