Pagini recente » Cod sursa (job #3262197) | Cod sursa (job #424702) | Cod sursa (job #3162852) | Cod sursa (job #299806) | Cod sursa (job #2130971)
#include <stdio.h>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
using namespace std;
FILE *f,*g;
int a[1002][5002];
struct elem
{
int e,c;
}v[1002];
/*bool criteriu (elem p, elem q)
{
if(p.e!=q.e)
return (p.e<q.e);
else
if(p.c!=q.c)
return (p.c<q.c);
}*/
int main()
{
int n,E,i,j;
f=fopen("energii.in","r");
g=fopen("energii.out","w");
fscanf(f,"%d",&n);
fscanf(f,"%d",&E);
for(i=1;i<=n;i++)
fscanf(f,"%d %d",&v[i].e,&v[i].c);
/*for(i=0;i<=n;i++)
for(j=0;j<=E;j++)
a[i][j]=999999999;*/
i=1;
for(j=1;j<=E;j++)
if(v[i].e>=j)
a[i][j]=v[i].c+a[i-1][v[i].e-j];
for(i=2;i<=n;i++)
{
for(j=1;j<=E;j++)
{
if(v[i].e>=j)
{
if(v[i].c+a[i-1][v[i].e-j]<a[i-1][j]||a[i-1][j]==0)
a[i][j]=v[i].c+a[i-1][v[i].e-j];
else
a[i][j]=a[i-1][j];
}
else
a[i][j]=a[i-1][j];
}
}
if(a[n][E]!=0)
fprintf(g,"%d",a[n][E]);
else
fprintf(g,"-1");
fclose(f);
fclose(g);
return 0;
}