Pagini recente » Cod sursa (job #3122889) | Cod sursa (job #956366) | Borderou de evaluare (job #1036101) | Cod sursa (job #286025) | Cod sursa (job #1375941)
#include <stdio.h>
#include <stdlib.h>
int energ[5001];
int main(){
FILE *fin, *fout;
int n, w, i, nre, nrc, min, j, abc;
fin=fopen("energii.in", "r");
fout=fopen("energii.out", "w");
fscanf(fin, "%d%d", &n, &w);
abc=-1;
for(i=0;i<n;i++){
fscanf(fin, "%d%d", &nre, &nrc);
for(j=5000;j>=0;j--)
if(energ[j]>0){
if(j+nre>5000){
if(abc==-1 || abc>energ[j]+nrc){
abc=energ[j]+nrc;
//printf("%d: %d+%d\n", abc, j, nre);
}
}
else if(energ[j+nre]==0 || energ[j+nre]>energ[j]+nrc)
energ[j+nre]=energ[j]+nrc;
}
energ[nre]=nrc;
}
min=100000000;
for(i=w;i<5001;i++)
if(min>energ[i] && energ[i]!=0)
min=energ[i];
//for(i=0;i<9;i++)
//printf("%d: %d\n", i, energ[i]);
printf("min: %d\nabc: %d", min, abc);
if(min!=100000000 && (abc>min || abc==-1))
fprintf(fout, "%d", min);
else
fprintf(fout, "%d", abc);
fclose(fin);
fclose(fout);
return 0;
}