Cod sursa(job #1792539)

Utilizator BlueStrutAndrei Prahoveanu BlueStrut Data 30 octombrie 2016 15:51:36
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<cstdio>
using namespace std;
int i, n, j, a[5002], sol=999999999, p, c, w;
inline int min(int a, int b){if (a<=b) return a; else return b;}
int main(){
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d%d", &n, &w);
    for (j=1;j<=n;j++) {
        scanf("%d%d", &p, &c);
        if (p>=w) {
            if (sol>c) sol=c;
            continue;
        }
        for (i=w-1;i>=0;i--) if (a[i]!=0) {
            if (i+p>=w) {if (a[i]+c<sol) sol=a[i]+c;}
                else if ((a[i]!=0)&&((a[i+p]>a[i]+c)||(a[i+p]==0))) a[i+p]=a[i]+c;
        }
        if ((a[p]==0)||(a[p]>c)) a[p]=c;
    }
    if (sol==999999999) printf("-1"); else printf("%d\n", sol);
    return 0;
}