Cod sursa(job #2150567)

Utilizator andrei32576Andrei Florea andrei32576 Data 3 martie 2018 17:21:21
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<fstream>
#include<algorithm>
using namespace std;

int n,G,i,j,S,c[10002],minn;
struct gen
{
    int en,ct;
};
gen v[10002];

ifstream f("energii.in");
ofstream g("energii.out");

bool cmp(gen a,gen b)
{
    if(a.en<b.en) return 1;
    if(a.en==b.en && a.ct<b.ct) return 1;
    return 0;
}

int main()
{
    f>>n>>G;
    for(i=1;i<=n;i++)
    {
        f>>v[i].en>>v[i].ct;
        S+=v[i].en;
    }
    sort(v+1,v+n+1,cmp);

    c[0]=1;
    minn=2000000000;

    for(i=1;i<=n;i++)
    {
        for(j=G-1;j>=0;j--)
        {
            if(c[j]!=0 && (c[j+v[i].en]==0 || (c[j+v[i].en]>c[j]+v[i].ct)))
            {
                c[j+v[i].en]=c[j]+v[i].ct;
                if(j+v[i].en>=G && c[j+v[i].en]<minn) minn=c[j+v[i].en];
            }
        }
    }

    if(minn==2000000000)
        g<<-1;
    else g<<minn-1;

    f.close();
    g.close();
    return 0;
}