Pagini recente » Cod sursa (job #729267) | Cod sursa (job #1891203) | Cod sursa (job #2513402) | Cod sursa (job #34193) | Cod sursa (job #3179298)
#include <iostream>
#include <vector>
using namespace std;
#include <fstream>
ifstream f("energii.in");
ofstream g("energii.out");
int main() {
int G, W, c_min;
f>>G;
f>>W;
int EG[G];
int CG[G];
for(int i = 0; i < G; i++){
f>>EG[i];
f>>CG[i];
}
// 10 5 - 15 ----> 3 posibilități 1
// 4 3 9 - 7 16 - 13 12 ----> 7 posibilități 4
// 5 3 6 12 - 8 11 17 - 9 15 - 18 - 14 20 - 21 - 26 ----> 14 posibilități 10
// 5 3 6 12 - 8 11 17 14 20 26 - 9 15 21 - 18
// 8 7 2 13 14 - 15 10 21 22 17 28 29 30 31 44 - 9 20 21 21 22 35 - 15 16 29 - 27 ----> 25 de posibilități 20
vector<int> sum_e;
vector<int> sum_c;
int pos = 1 << G; // Numărul total de combinații posibile
for (int i = 0; i < pos; i++) {
int sum1 = 0;
int sum2 = 0;
vector<int> comb1; // combination vector 1
vector<int> comb2; // combination vector 2
for (int j = 0; j < G; j++) {
if (i & (1 << j)) {
sum1 += EG[j];
sum2 += CG[j];
comb1.push_back(EG[j]);
comb2.push_back(CG[j]);
}
}
sum_e.push_back(sum1);
sum_c.push_back(sum2);
}
int aux1, aux2;
int nr_val = sum_e.size();
for(int i = 0; i < nr_val; i++){
for(int j = i; j < nr_val-1; j++){
if(sum_c[j+1] < sum_c[j]){
aux1 = sum_c[j];
sum_c[j] = sum_c[j+1];
sum_c[j+1] = aux1;
aux2 = sum_e[j];
sum_e[j] = sum_e[j+1];
sum_e[j+1] = aux2;
}
}
}
/*
for(int i = 0; i < nr_val; i++){
cout<<sum_e[i]<<" ";
}
cout<<endl;
for(int i = 0; i < nr_val; i++){
cout<<sum_c[i]<<" ";
}
*/
c_min = -1; // cost minim
for(int i = 0; i < nr_val; i++){
if(sum_e[i] >= W){
c_min = sum_c[i];
break;
}
}
g<<c_min;
return 0;
}