Cod sursa(job #1792493)

Utilizator BlueStrutAndrei Prahoveanu BlueStrut Data 30 octombrie 2016 15:25:14
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<cstdio>
using namespace std;
int i, n, pmax, mx, a[1005], x, y, j;
int main(){
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d%d", &n, &pmax);
    mx=0;
    for (i=1;i<=n;i++) {
        scanf("%d%d", &x, &y); ///x=energia y=costul
        for (j=mx;j>=0;j--) if (j+x<=pmax)
            if ((a[j]>0)&&(a[j+x]>a[j]+y)) {
                a[j+x]=a[y]+j;
                if (mx<j+x) mx=j+x;
            }
        if ((a[x]==0)||(a[x]>y)) a[x]=y;
    }
    if (a[pmax]!=0) printf("%d", a[pmax]); else printf("-1\n");
    return 0;
}