Cod sursa(job #2123994)

Utilizator cyg_LucaFlorinTanasescu Luca Florin cyg_LucaFlorin Data 6 februarie 2018 19:39:26
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <cstdio>
#include <cstring>

using namespace std;

int d[5001];

int min(int a,int b)
{
    int min1;
    min1=a;
    if(min1>b)
        min1=b;
    return min1;
}

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int g,w,last,i,j,min1,x,y;
    scanf("%d",&g);
    scanf("%d",&w);
    for(i=1;i<=w;i++)
        d[i]=-1;
    last=0;
    min1=-1;
    for(i=1;i<=g;i++)
    {
        scanf("%d%d",&x,&y);
        for(j=last;j>=0;j--)
            if(d[j]!=-1)
            {
                if(j+x<w)
                {
                    if(d[j+x]==-1)
                        d[j+x]=d[j]+y;
                    else
                        d[j+x]=min(d[j]+y,d[j+x]);
                }
                else
                {
                    if(min1==-1)
                        min1=d[j]+y;
                    else
                        if(min1>d[j]+y)
                            min1=d[j]+y;
                }
            }
        last=min(w,last+x);
    }
    printf("%d",min1);
    return 0;
}