Pagini recente » Cod sursa (job #817163) | Cod sursa (job #1404057) | Cod sursa (job #1237894) | Cod sursa (job #834153) | Cod sursa (job #1670710)
#include <stdio.h>
#define MAX_SIZE 1000 + 1
int RG[MAX_SIZE];
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
int G,W,ce,cc,mx = 0,k,i,j;
scanf("%d\n%d\n",&G,&W);
int minim = MAX_SIZE;
for(k = 1; k <= G; ++k)
{
scanf("%d %d",&ce,&cc);
for(i = mx; i >= 1; --i)
{
if(RG[i] > 0 && i + ce <= MAX_SIZE && (RG[i] + cc < RG[i + ce] || RG[i + ce] == 0))
{
RG[i + ce] = RG[i] + cc;
if(i + ce > mx)
mx = i + ce;
if(i + ce >= W && RG[i + ce] < minim)
minim = RG[i + ce];
}
}
if(ce >= W && RG[ce] < minim)
minim = RG[ce];
if((RG[ce] != 0 && RG[ce] > cc) || RG[i] == 0)
{
RG[ce] = cc;
if(ce > mx)
mx = ce;
}
}
if(minim == MAX_SIZE)
printf("-1\n");
else
printf("%d\n",minim);
return 0;
}