Cod sursa(job #2129200)

Utilizator albucristianAlbu Cristian-Gabriel albucristian Data 12 februarie 2018 16:50:53
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <algorithm>
using namespace std;
int ma[1002][5002];
struct punct
{
    int e,c;
}v[1002];
int main()
{
    int g,w,i,j,sol;
    int s,c;
    ifstream in("energii.in");
    ofstream out("energii.out");
    in>>g>>w;
    s=c=0;
    for(i=1;i<=g;i++)
    {
        in>>v[i].e>>v[i].c;
        s+=v[i].e;
        c+=v[i].c;
    }
    if(s<w)
    {
        out<<-1;
    }
    else
    {
        if(s==w)
        {
            out<<c;
        }
        else
        {
            sol=s-w;
            for(i=1;i<=g;i++)
            {
                for(j=1;j<=sol;j++)
                {
                    if(v[i].e<=j)
                    {
                        ma[i][j]=max(ma[i-1][j-v[i].e]+v[i].c,ma[i-1][j]);
                    }
                    else
                    {
                        ma[i][j]=ma[i-1][j];
                    }
                }
            }
            out<<c-ma[g][sol];
        }
    }
    return 0;
}