Pagini recente » Cod sursa (job #2594526) | Cod sursa (job #2096561) | Cod sursa (job #2511858) | Cod sursa (job #559495) | Cod sursa (job #2966511)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
struct celula
{
int c;
int e;
} v[1005];
int a[10000100];
int main()
{
int g,w;
int s=0;
in>>g;
in>>w;
for(int i=1; i<=g; i++)
{
in>>v[i].e>>v[i].c;
s+=v[i].e;
}
if(w>s)
{
cout<<-1;
return 0;
}
for(int i=1; i<=s; i++)
a[i]=-1;
a[0]=0;
for(int i=1; i<=g; i++)
{
for(int k=s; k>=v[i].e; k--)
if(a[k-v[i].e]!=-1 && (a[k]==-1 || a[k-v[i].e]+v[i].c<a[k]))
a[k]=a[k-v[i].e]+v[i].c;
}
int minim;
int j=w;
while(a[j]==-1 && j<=s)
j++;
minim=a[j];
for(int i=j; i<=s; i++)
{
if(a[i]!=-1)
minim=min(minim,a[i]);
}
out<<minim;
return 0;
}