#include #include #include #include #include using namespace std; int ilosc_zapytan; float tab_int[1000][1000]; int i; int j; int k; int l; int x = 0; int tab_op[2][5]; int max_rzeczy; int max_profit_temp = 0; int max_profit = 0; int cap_car; int masa_item=0; int main() { // wczytywanie liczb cin >> ilosc_zapytan; for (i = 0; i < ilosc_zapytan; i++) { int max_rzeczy = 15; // ilosc przedmiotów cin >> tab_int[i * 5][0]; // wartosc przedmiotow for (j = 0; j < tab_int[i * 5][0]; j++) { cin >> tab_int[i * 5 + 1][j]; } // masa przedmiotu for (k = 0; k < tab_int[i * 5][0]; k++) { cin >> tab_int[i * 5 + 2][k]; } // pojemnosc załadunkowa auta cin >> tab_int[i * 5 + 4][0]; // odejmowanie 5 zł for (j = 0; j < tab_int[i * 5][0]; j++) { if (tab_int[i * 5 + 2][j] > 100) { tab_int[i * 5 + 1][j] = tab_int[i * 5 + 1][j] - 5; } } // obliczanie oplacalnosci przedmiotu for (l = 0; l < tab_int[i * 5][0]; l++) { tab_int[i * 5 + 3][l] = tab_int[i * 5 + 1][l] / tab_int[i * 5 + 2][l]; } // zapis w tablicy opłacalności for (j = 0; j < tab_int[i * 5][0]; j++) { if (tab_int[i * 5 + 3][j] > 0) { tab_op[0][x] = tab_int[i * 5 + 1][j]; tab_op[1][x] = tab_int[i * 5 + 2][j]; x++; } } // sprawdzanie czy tablica opłacalności ma więcej elementów niż można wziąść if (max_rzeczy > x) max_rzeczy = x; cap_car = tab_int[i * 5 + 4][0]; max_profit_temp = 0; for (int variacja = 0; variacja < pow(2, 15); variacja++) { max_profit_temp = 0; masa_item = 0; for (int k = 0; k < x; k++) { if ((variacja & k) == 1) { max_profit_temp += tab_op[0][k]; masa_item += tab_op[1][k]; } } if (max_profit_temp > max_profit && masa_item <= cap_car) { max_profit = max_profit_temp; } cout << variacja << endl; } } cout << max_profit << endl; return 0; }