Cod sursa(job #1150354)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 22 martie 2014 21:38:31
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <iostream>
#include <cstdio>

using namespace std;
int Putere[10001],Cost[10001],Val[10001],s,i,N,W,sc,j,sol=999999;
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    cin>>N>>W;
    for(i=1;i<=N;i++)
    {
        cin>>Putere[i]>>Cost[i];
        if(Putere[i]>=W)
        {
            if(Cost[i]<sol)
                sol=Cost[i];
        }
        s=s+Putere[i];
        sc=sc+Cost[i];
    }
    if(s<W)
        cout<<-1;
    if(s==W)
        cout<<sc;
    if(s>W)
    {
        for(i=1;i<=N;i++)
            for(j=W;j>=Putere[i];j--)
            {
                if(Val[j]!=0)
                {
                    if(j+Putere[i]>=W)
                    {
                        if(Val[j]+Val[Putere[i]]<sol)
                            sol=Val[j]+Val[Putere[i]];
                    }
                    else
                    {
                    if(Val[j+Putere[i]]!=0)
                        Val[j+Putere[i]]=min(Val[j+Putere[i]],Val[j]+Val[Putere[i]]);
                    else
                        Val[j+Putere[i]]=Val[j]+Val[Putere[i]];
                    }
                }
            }
    }
    cout<<sol;
    return 0;
}