Cod sursa(job #1207673)

Utilizator BlueStrutAndrei Prahoveanu BlueStrut Data 13 iulie 2014 16:08:13
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<cstdio>
using namespace std;
int i, cd[10005], a[10005], n, m, nr, val, c, j, mn;
int main(){
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d%d", &n, &m); for (i=1;i<=2*m;i++) a[i]=999999999;
    a[0]=0; cd[0]=1; cd[1]=0; mn=999999999;
    for (j=1;j<=n;j++) { nr=0;
        scanf("%d%d", &val, &c);
        for (i=1;i<=cd[0];i++) {
            if ((cd[i]<m)&&(a[cd[i]+val]>cd[i]+c)) {
                if (a[cd[i]+val]==999999999) {nr++; cd[cd[0]+nr]=cd[i]+val;}
                a[cd[i]+val]=cd[i]+c;
                if ((cd[i]+val>=m)&&(a[cd[i]+val]<mn)) mn=a[cd[i]+val];
            }
        }
        cd[0]+=nr;
    }
    printf("%d\n", mn); return 0;
}