Cod sursa(job #1107003)

Utilizator andreeadeacAndreea Ioana Deac andreeadeac Data 13 februarie 2014 15:55:46
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
using namespace std;

FILE *f=fopen("energii.in","r"), *g=fopen("energii.out","w");

const long long N=10000001;
long long cost[N];
struct {int e,c;} a[1001];
int main(){
    int gr,w,i,j;
    long long mini,s=0;
    fscanf(f,"%d%d",&gr, &w);
    for(i=1;i<=gr;i++){
        fscanf(f,"%d%d",&a[i].e,&a[i].c);
        s=s+a[i].e;
    }
    mini=N;
    for(i=1;i<=s;i++)
        cost[i]=N;
    cost[0]=0;
    for(i=1;i<=gr;i++)
        for(j=s-a[i].e;j>=0;j--)
            if(cost[j]!=N && cost[j]+a[i].c<cost[j+a[i].e]){
                cost[j+a[i].e]=cost[j]+a[i].c;
                if(j+a[i].e>=w && cost[j+a[i].e]<mini)
                    mini=cost[j+a[i].e];
            }
    if(mini==N)
        fprintf(g,"-1");
    else
        fprintf(g,"%ld\n",mini);
    return 0;
}