Pagini recente » Cod sursa (job #2624366) | Cod sursa (job #2125372) | Cod sursa (job #303965) | Cod sursa (job #2133302) | Cod sursa (job #403477)
Cod sursa(job #403477)
#include<stdio.h>
#define N 100000000
#define NN 16003
int n,s,smax,i,min,en[NN],a[1004][2],j,ok[NN];
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d",&n);
scanf("%d",&s);
for(i=1;i<=n;i++)
{
scanf("%d %d",&a[i][0],&a[i][1]);
smax+=a[i][0];
}
if(smax<s)
printf("-1");
if(smax==s)
{
smax=0;
for(i=1;i<=n;i++)
smax+=a[i][1];
printf("%d",smax);
}
if(smax>s)
{
for(i=1;i<=NN;i++)
en[i]=N;
en[a[1][0]]=a[1][1];
for(i=2;i<=n;i++)
{
for(j=1;j<=s;j++)
if(en[j]!=N&&ok[j]!=i&&en[j+a[i][0]]>en[j]+a[i][1])
{
en[j+a[i][0]]=en[j]+a[i][1];
ok[j+a[i][0]]=i;
}
if(a[i][1]<en[a[i][0]])
en[a[i][0]]=a[i][1];
}
min=NN;
for(i=s;i<=NN;i++)
if(min>en[i])
min=en[i];
printf("%d",min);
}
return 0;
}