Cod sursa(job #219124)

Utilizator crisy_girlpop cristina crisy_girl Data 5 noiembrie 2008 18:43:40
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<stdio.h>
int W,G,A[1002][2],D[2][5002],X,M;

int min(int a1,int a2,int k)
{
    if (a1<0) {if (a2-A[k][2]<0) return -1;
    else return a2;}
    else if (a1<a2) return a1; else return a2;
}

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d %d", &G, &W);
    int l=0;
    for (int i=1; i<=G; ++i)
        scanf("%d %d", &A[i][1] ,&A[i][2]);
    for (int i=1; i<=W; ++i)
        if (A[1][1]>=i) 
        D[X][i]=A[1][2];
        else D[X][i]=-1;
    for (int i=2; i<=G; ++i)
    {
        for (int j=1;j<=W;++j)
        {
            if((j-A[i][1])<0) l=0;else l=j-A[i][1];
            M=min(D[X][j],D[X][l]+A[i][2],i);
            D[!X][j]=M;
        }
        X=!X;
    }
     printf("%d", D[X][W]);
}