Cod sursa(job #2205795)

Utilizator lucaperjuLuca Perju Verzotti lucaperju Data 20 mai 2018 12:40:30
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <fstream>

using namespace std;
ifstream in ("energii.in");
ofstream out ("energii.out");
int d[5010];
int main()
{
    int n,w,j,i,e,c;
    in>>n>>w;
    for(i=0;i<=w+5;i++)
        d[i]=-1;
    for(i=1;i<=n;i++)
    {
        in>>e>>c;
        for(j=w-1;j>=1;j--)
        {
            if(d[j]!=-1)
            {
                if(j+e<=w)
                {
                    if(d[j+e]!=-1)
                        d[j+e]=min(d[j+e],d[j]+c);
                    else
                        d[j+e]=d[j]+c;
                }
                else
                {
                    if(d[w+2]!=-1)
                        d[w+2]=min(d[w+2],d[j]+c);
                    else
                        d[w+2]=d[j]+c;
                }
            }
        }
        if(e<=w){
            if(d[e]!=-1)
                d[e]=min(d[e],c);
            else
                d[e]=c;
        }
        else
        {
            if(d[w+2]!=-1)
                d[w+2]=min(d[w+2],c);
            else
                d[w+2]=c;
        }
    }
    int mn=999999999;
    for(i=w+2;i>=w;i--)
    {
        if(d[i]!=-1 && d[i]<mn)
            mn=d[i];
    }
    if(mn!=999999999)
        out<<mn;
    else
        out<<-1;
    return 0;
}