Cod sursa(job #444244)

Utilizator DaninetDani Biro Daninet Data 19 aprilie 2010 20:19:44
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>

int a[300000];


int main() {
	FILE *ff,*gg;
	ff = fopen("energii.in","r");
	gg = fopen("energii.out","w");
	int g, w;
	fscanf(ff,"%d\n%d\n",&g,&w);
	int e,c;
	for (int i=1; i<=w; ++i) {
		a[i] = -1;
	}
	for (int i=1;i<=g; i++) {
		fscanf(ff,"%d %d\n", &e, &c);
		for (int j=w; j>=e+1; --j) {
			if (a[j-e]!=-1) {
				if (a[j]==-1 || a[j-e]+c<a[j]) {
					a[j] = a[j-e]+c;
				}
			}
		}
		for (int j=e;j>=0;--j) {
			if (a[j]==-1 || a[j]>c) 
				a[j] = c;
		}
		/*for (int i=1; i<=w; ++i) 
			printf("%d ",a[i]);
		printf("\n");
		getchar();*/
	}
	//if (a[w]==0) fprintf(gg,"-1");
	/*else*/ fprintf(gg,"%d",a[w]);
	
	fclose(ff);
	fclose(gg);
	return 0;
}