Pagini recente » Monitorul de evaluare | Cod sursa (job #1138461) | Cod sursa (job #159530) | Rating alexandru adeaconitei (alexandru95) | Cod sursa (job #596343)
Cod sursa(job #596343)
#include<stdio.h>
#define MaxN 100100
#define INF 1000100
int W[MaxN];
int G;
int Wacc;
int a;
int b;
int 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;i--)
if(W[i])
if(!W[i + a] || W[i + a] > W[i] + b)
W[i + a] = W[i] + b;
if(!W[a] || W[a]>b)
W[a] = b;
}
for(int i=Wacc;i<MaxN;i++)
if(W[i] && W[i] < MIN)
MIN = W[i];
if(MIN == INF)
fprintf(g,"-1");
else
fprintf(g,"%d",MIN);
fclose(g);
fclose(f);
return 0;
}