Pagini recente » Cod sursa (job #2568626) | Cod sursa (job #2953520) | Cod sursa (job #1659893) | Cod sursa (job #44839) | Cod sursa (job #2174529)
#include <stdio.h>
using namespace std;
FILE *f,*g;
int a[1002][5002],ng,gr;
struct
{
int c,g;
}v[1001];
void read()
{
fscanf(f,"%d %d",&ng,&gr);
for(int i=1;i<=ng;i++)
fscanf(f,"%d %d",&v[i].g,&v[i].c);
}
void dinamica()
{
int i,j;
for(i=0;i<=gr;i++)
a[0][i]=999999;
for(i=1;i<=ng;i++)
for(j=1;j<=gr;j++)
if(v[i].g<=j)
if(v[i].c+a[i-1][j-v[i].g]<a[i-1][j])
a[i][j]=v[i].c+a[i-1][j-v[i].g];
else
a[i][j]=a[i-1][j];
else
if(a[i-1][j]<v[i].c)
a[i][j]=a[i-1][j];
else
a[i][j]=v[i].c;
}
int main()
{
f=fopen("energii.in","r");
g=fopen("energii.out","w");
read();
dinamica();
if(a[ng][gr]<999999)
fprintf(g,"%d",a[ng][gr]);
else
fprintf(g,"-1");
return 0;
}