Cod sursa(job #1375852)

Utilizator EmplopiStefan Nitu Emplopi Data 5 martie 2015 14:44:07
Problema Energii Scor 50
Compilator c Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
#include <stdlib.h>

int energ[10000001];

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(energ[j+nre]==0 || energ[j+nre]>energ[j]+nrc){
                    if(j+nre>5000)
                        abc=energ[j]+nrc;
                    else
                        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];
    if(min!=100000000)
        fprintf(fout, "%d", min);
    else
        fprintf(fout, "%d", abc);
    fclose(fin);
    fclose(fout);

    return 0;
}