Pagini recente » Cod sursa (job #1517549) | Cod sursa (job #1569644) | Cod sursa (job #402776) | Cod sursa (job #2471145) | Cod sursa (job #596430)
Cod sursa(job #596430)
#include<stdio.h>
#define MaxN 5100
#define INF 1012100
#define ll long long
ll W[MaxN];
bool Wb[MaxN];
int G;
int Wacc;
int a;
int b;
ll MIN = INF;
int main()
{
FILE *f = fopen("energii.in","r");
FILE *g = fopen("energii.out","w");
fscanf(f,"%d %d",&G,&Wacc);
for(int j=1;j<=G;j++)
{
fscanf(f,"%d %d",&a,&b);
for(int i=Wacc;i>-1;i--)
if(Wb[i])
{
if((!W[i + a] || W[i + a] > W[i] + b) && a + i < Wacc)
{ W[i + a] = W[i] + b; Wb[i + a] = true; }
if(i + a >= Wacc && W[i] + b < MIN)
MIN = W[i] + b;
}
if((!W[a] || W[a]>b) && a >= Wacc)
{ W[a] = b; Wb[a] = true; }
if(a >= Wacc && b < MIN)
MIN = b;
}
if(MIN == INF)
fprintf(g,"-1");
else
fprintf(g,"%llu",MIN);
fclose(g);
fclose(f);
return 0;
}