Cod sursa(job #407144)

Utilizator vladcatrinaVlad Catrina vladcatrina Data 2 martie 2010 08:50:53
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>
#define INF 10002

int v[5002];
int e[1002];
int c[1002];

int n,w,i,j;

int main(){
	FILE *f = fopen("energii.in","r");
	fscanf(f,"%d %d",&n,&w);
	for (i=1;i<=n;i++) 
		fscanf(f,"%d %d",&e[i],&c[i]);
	fclose(f);
	
	v[0] = 0;
	for (i=1;i<=w;i++)
		v[i] = INF;
	
	for (i=1;i<=n;i++) {
		for (j = w;j>=0;j--) {
			if (v[j]!=INF ) {   
				if (j+e[i]<w) {
					if (v[j+e[i]] > v[j]+c[i])
						v[j+e[i]] = v[j]+c[i];
				} else {
					if (v[w] > v[j]+c[i])
						v[w] = v[j]+c[i];
				}
				
			}
		}
	}
	
	FILE *g = fopen("energii.out","w");
		
	if (v[w] ==INF)
		fprintf(g,"-1");
	else
		fprintf(g,"%d",v[w]);
	fclose(g);
}