Cod sursa(job #1866863)

Utilizator lauratalaatlaura talaat lauratalaat Data 3 februarie 2017 16:30:07
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<stdio.h>
struct bine { int energ ; int cost ;};
bine v[1001];
int d[5000001];
int maxim( int a , int b ){
    if(a>b)
        return a;
    return b;
}
int main(){
    int n,e,emax,cmax,i,j;
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d%d",&n,&e);
    emax=cmax=0;
    for(i=1;i<=n;i++){
        scanf("%d%d",&v[i].energ,&v[i].cost);
        emax=emax+v[i].energ;
        cmax=cmax+v[i].cost;
    }
    if(emax<e)
        printf("-1\n");
    else{
        for(i=1;i<=n;i++){
            for(j=cmax;j>=v[i].cost;j--){
                d[j]=maxim(d[j],d[j-v[i].cost]+v[i].energ);
                if(d[j]>=e)
                    cmax=j;
            }
        }
        printf("%d\n",cmax);
    }
    return 0;
}