Pagini recente » Cod sursa (job #1766083) | Cod sursa (job #2690528) | Cod sursa (job #345791) | Cod sursa (job #3343847) | Cod sursa (job #3356217)
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
struct generator{
int val;
int cost;
};
struct sum{
bool val;
int cost = 1e9;
};
int main()
{
generator v[1001];
sum suma[15001];
int g, w;
fin >> g >> w;
for(int i = 1; i <= g; i++) {
fin >> v[i].val >> v[i].cost;
}
suma[0].val = 1;
suma[0].cost = 0;
int smax = 0;
for(int i = 1; i <= g; i++) {
for(int j = smax; j >= 0; j--) {
int aux = j + v[i].val;
if(suma[j].val != 0 && aux <= 15000) {
suma[aux].val = 1;
suma[aux].cost = min(v[i].cost + suma[j].cost, suma[aux].cost);
}
}
smax = min(v[i].val+ smax, 15000);
}
int mini = INT_MAX;
bool exista = 0;
for(int i = w; i <= smax; i++) {
exista = 1;
if(suma[i].val == 1) {
mini = min(mini, suma[i].cost);
}
}
if(exista == 1)
fout << mini;
else
fout << -1;
return 0;
}