Cod sursa(job #1435962)

Utilizator stefan_creastaStefan Creasta stefan_creasta Data 14 mai 2015 20:31:30
Problema Energii Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>
using namespace std;
const int INF=1e9;
const int WMAX=5001;
int d[WMAX];
int main()
{
	FILE *fin, *fout;
    int G,W,i,e,c,last,j;
    fin=fopen("energii.in","r");
    fout=fopen("energii.out","w");
    fscanf(fin,"%d%d",&G,&W);
    last=0;
    for(i=1;i<=W;++i)
		d[i]=INF;
	for(i=1;i<=W;++i)
	{
		fscanf(fin,"%d%d",&e,&c);
		for(j=last;j>=0;--j)
			if(d[j]!=INF)
				if(j+e<=W)
				{
					if(d[j+e]>d[j]+c)
					{
						d[j+e]=d[j]+c;
						if(j+e>last)
							last=j+e;
					}
				}
				else
					if(d[W]>d[j]+c)
					{
						d[W]=d[j]+c;
						last=W;
					}
	}
	if(d[W]==INF)
		fprintf(fout,"-1");
	else
		fprintf(fout,"%d\n",d[W]);
    fclose(fin);
    fclose(fout);
    return 0;
}