Pagini recente » Cod sursa (job #1148369) | Cod sursa (job #850023) | Cod sursa (job #2242463) | Cod sursa (job #3284692) | Cod sursa (job #1674901)
#include <stdio.h>
FILE *fin = fopen("energii.in", "r");
FILE *fout = fopen("energii.out", "w");
int s[10000000];
int main(){
int G, W;
int i, j, maxm, minm, cant, cost;
fscanf(fin, "%d", &G);
fscanf(fin, "%d", &W);
maxm = 0;
minm = 999999999;
for(i = 1; i <= G; i++){
fscanf(fin, "%d %d", &cant, &cost);
for(j = maxm; j >= 1; j--)
if(s[j]){
if(s[j + cant] == 0)
s[j + cant] = s[j] + cost;
else if(s[j + cant] > s[j] + cost)
s[j + cant] = s[j] + cost;
if(maxm < j + cant)
maxm = j + cant;
if(j + cant >= W && minm > s[j + cant])
minm = s[j + cant];
}
if(s[cant] == 0)
s[cant] = cost;
else if(s[cant] > cost)
s[cant] = cost;
// if(maxm < cant)
// maxm = cant;
if(j + cant >= W && minm > s[j + cant])
minm = s[j + cant];
}
// maxm = 0;
// minm = 999999999;
//// s[0] = 1;
// for(i = 1; i <= G; i++){
// for(j = maxm; j >= 1; j--)
// if(s[j]){
// if(s[j + gener[i].cant] == 0)
// s[j + gener[i].cant] = s[j] + gener[i].cost;
// else if(s[j + gener[i].cant] > s[j] + gener[i].cost)
// s[j + gener[i].cant] = s[j] + gener[i].cost;
// if(maxm < j + gener[i].cant)
// maxm = j + gener[i].cant;
// if(j + gener[i].cant >= W && minm > s[j + gener[i].cant])
// minm = s[j + gener[i].cant];
// }
// if(s[gener[i].cant] == 0)
// s[gener[i].cant] = gener[i].cost;
// else if(s[gener[i].cant] > gener[i].cost)
// s[gener[i].cant] = gener[i].cost;
// if(maxm < gener[i].cant)
// maxm = gener[i].cant;
// if(j + gener[i].cant >= W && minm > s[j + gener[i].cant])
// minm = s[j + gener[i].cant];
// }
// for(i = 1; i <= 14; i++)
// fprintf(fout, "%d ", s[i]);
// minm = 999999999;
// for(i = W; i <= maxm; i++)
// if(s[i] < minm && s[i] != 0)
// minm = s[i];
fprintf(fout, "%d\n", minm);
fclose(fin);
fclose(fout);
return 0;
}