Pagini recente » Cod sursa (job #399251) | Cod sursa (job #219781) | Cod sursa (job #372087) | Cod sursa (job #48078)
Cod sursa(job #48078)
#include <stdio.h>
short n, energii[1001], costuri[1001], energieNecesara;
long c[10000000];
FILE *fout = fopen("energii.out", "w");
void cit(){
short register i;
FILE *fin = fopen("energii.in", "r");
fscanf(fin, "%hi", &n);
fscanf(fin, "%hi", &energieNecesara);
for(i=1; i<=n; i++)
fscanf(fin, "%hi %hi", &energii[i], &costuri[i]);
fclose(fin);
}
void solve(){
long max = 0, i, j, min;
c[0]=1;
for(i=1; i<=n; i++){
for(j=max; j>=0; j--)
if (c[j])
if(c[j]+costuri[i] < c[j+energii[i]] || c[j+energii[i]] == 0)
c[j+energii[i]] = c[j]+costuri[i];
max += energii[i];
if (max>energieNecesara) max=energieNecesara;
}
min=100000;
for(i=energieNecesara; i<=max; i++)
if (c[i] && c[i]<min) min=c[i];
if (max<energieNecesara) fprintf(fout,"-1");
else
fprintf(fout, "%li", min-1);
}
int main(){
cit();
solve();
fclose(fout);
return 0;
}