Pagini recente » Cod sursa (job #2750204) | Cod sursa (job #1857901) | Cod sursa (job #2884363) | Cod sursa (job #1401701) | Cod sursa (job #2828601)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int n,vmin,s,i,p[1001],v[1001],a[1001],b[1001],k,mn,j;
int main()
{
fin>>n>>vmin;
s=0;
for (i=1; i<=n; i++)
{
fin>>p[i]>>v[i];
s=s+p[i];
}
if (s<vmin) fout<<-1;
else if (s==vmin)
{
k=0;
for (i=1;i<=n;i++)
k=k+v[i];
fout<<k;
}
else
{
mn=s;
for (i=1;i<=n;i++)
a[i]=-1;
for (i=1;i<=n;i++)
{
for (j=1;j<=vmin;j++)
{
b[j]=a[j];
if (j-p[i]>0 && a[j-p[i]]!=-1)
{
b[j]=min(b[j],b[j-p[i]]+v[i]);
}
else if (j-p[i]<=0 && b[j-p[i]]+v[i]>=vmin)
if (b[j-p[i]]+v[i]<mn) mn=b[j-p[i]]+v[i];
}
for (k=1;k<=vmin;k++)
a[k]=b[k];
}
fout<<mn;
}
return 0;
}