Cod sursa(job #1702943)

Utilizator andreicoman299Coman Andrei andreicoman299 Data 15 mai 2016 20:16:33
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXW 5000
#define INF 2000000000

int d[1+MAXW];
int main(){
    int i, j, g, w, e, c;
    FILE*fi,*fo;
    fi=fopen("energii.in","r");
    fo=fopen("energii.out","w");
    fscanf(fi,"%d%d", &g, &w);
    for(i=0;i<=MAXW;i++)
        d[i]=INF;
    for(i=0;i<g;i++){
        fscanf(fi,"%d%d", &e, &c);
        for(j=w;j>=0;j--){
            if(d[j]!=INF){
                if(j+e>=w && d[j]+c<d[w])
                    d[w]=d[j]+c;
                if(j+e<w && d[j]+c<d[j+e])
                    d[j+e]=d[j]+c;
            }
        }
        if(c<=d[e])
            d[e]=c;
    }
    if(d[w]==INF)
        fprintf(fo,"0");
    else
        fprintf(fo,"%d", d[w]);
    fclose(fi);
    fclose(fo);
    return 0;
}