Cod sursa(job #928382)

Utilizator Vladinho97Iordan Vlad Vladinho97 Data 26 martie 2013 13:50:40
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <cstdio>
#include <algorithm>
using namespace std;
int v[1005],n,w[5005],cost;
int d[50000000];
int main()
{
    int i,j,s=0,dr,x;
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d%d",&n,&cost);
    for(i=1;i<=n;i++)
        {
            scanf("%d%d",&w[i],&v[i]);
            s+=w[i];
        }
    if(s<cost)
    {
        printf("-1\n");
    }
    else
    {
        d[0]=0;
        for(i=1;i<=s;i++)
            d[i]=-1;
        dr=0;
        for(i=1;i<=n;i++)
            for(j=dr;j>=0;j--)
            {
              if(d[j]!=-1)
              {
                  x=d[j]+v[i];
                  if(x<d[j+w[i]]||d[j+w[i]]==-1)
                    {
                        d[j+w[i]]=x;

                    }
                    if(dr<j+w[i])
                      dr=j+w[i];
              }

            }
        i=cost;
        sort(d+cost,d+s+1);
        while(d[i]==-1||d[i]==0)
        {
            i++;
        }
        printf("%d\n",d[cost]);
    }


    return 0;
}