Pagini recente » Cod sursa (job #1231394) | Cod sursa (job #54680) | Cod sursa (job #1789399) | Cod sursa (job #2438641) | Cod sursa (job #2124513)
#include <fstream>
#define e first
#define c second
using namespace std;
int n, i, g, w, s, d[10000*10000+1], j, cost = 10000*10000+1, maxim;
pair<int, int> gen[1002];
char ok;
ifstream fin("energii.in");
ofstream fout("energii.out");
int main(){
fin>>g>>w;
for(i=1;i<=g;i++){
fin>>gen[i].e>>gen[i].c;
if(maxim < gen[i].e)
maxim = gen[i].e;
}
for(i=1;i<=g;i++)
for(j=maxim;j>=0;j--)
if((d[j]>0 || j == 0) && (d[j+gen[i].e] > d[j] + gen[i].c || d[j+gen[i].e] == 0)){
d[j+gen[i].e] = d[j] + gen[i].c;
if(j+gen[i].e >= w && d[j+gen[i].e] < cost)
cost = d[j+gen[i].e], ok = 1;
if(maxim < j+gen[i].e)
maxim = j+gen[i].e;
}
if(ok)
fout<<cost;
else
fout<<-1;
return 0;
}