Cod sursa(job #604516)

Utilizator Gady_paulGafton Paul Gady_paul Data 22 iulie 2011 23:13:11
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<stdio.h>

#define INF 30000

typedef struct gClass{
	int pow;
	int c;
	bool used;
};

void scan(FILE *f, int G, gClass *gen){

	int a, b;

	for(int i = 0; i < G; i++){
		fscanf(f, "%d %d", &a, &b);
		gen -> pow =a ;
		gen -> c = b;
		gen++;
	}
}

void setToINF(int *a){
	for(int i = 0; i < 1000; i++)
		*(a + i)=INF;
}

int compute(gClass *gen, int G, int W){

	int cost=0, a[1000], b[1000];
	bool bas[1000][1000];

	setToINF(a);

	gClass *x;
	a[0]=0;
	for(int i=1; i<=W; i++){
		for(int j=0; j<G; j++){
			x=gen+j;
			if(x->used!=false && x->pow<=i && (a[i-x->pow]+x->c)<a[i] && bas[j][i-x->pow]!=false){
				a[i]=a[i-x->pow]+x->c;
				bas[j][i]=false;
			}
		}
	}

	return a[W];
}

int main(){

	FILE *f, *g;
	f=fopen("energii.in", "r");
	g=fopen("energii.out", "w");

	int G, W, p;
	gClass gen[1000];

	fscanf(f, "%d %d", &G, &W);

	scan(f, G, gen);

	p=compute(gen, G, W);

	fprintf(g, "%d", p);

	return 0;
}