Cod sursa(job #1375941)

Utilizator EmplopiStefan Nitu Emplopi Data 5 martie 2015 15:08:59
Problema Energii Scor 85
Compilator c Status done
Runda Arhiva de probleme Marime 1.17 kb
#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;
}