Cod sursa(job #406649)
| Utilizator | Data | 1 martie 2010 18:31:02 | |
|---|---|---|---|
| Problema | Energii | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.55 kb |
#include <stdio.h>
#define MAX 10001
FILE*f = fopen("energii.in","r");
FILE*g = fopen("energii.out","w");
int n,w,i,j,v[5001],e[10001],c[10001];
int main() {
fscanf(f,"%d %d",&n,&w);
for(i=1;i<=n;i++){
fscanf(f,"%d %d",&e[i],&c[i]);
}
for(i=1;i<=5000;i++)
v[i]=MAX;
for(i=1;i<=n;i++){
for(j=e[i];j>=0;j--){
if(v[j]!=MAX){
if(v[e[i]+e[j]]>c[i]+v[j])
v[e[i]+e[j]]=c[i]+v[j];
}
if(j>w && v[j]<v[w])
v[w]=v[j];
}
}
fprintf(g,"%d",v[w]);
fclose(f);
fclose(g);
return 0;
}