Cod sursa(job #1914136)

Utilizator alexilasiAlex Ilasi alexilasi Data 8 martie 2017 15:42:58
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <vector>
#include <climits>

using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");

vector <int> v;
struct gen{int e,co;}g[1001];
int n,m,i,Min,j,b[100001],c[100001],x;

int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)
    {
        fin>>g[i].e>>g[i].co;
    }
    v.push_back(0);
    for(i=1;i<=n;i++)
    {
        x=v.size();
        vector <pair <int,int> >mod;
        for(j=0;j<x;j++)
        {
            if(b[v[j]+g[i].e]==0)
            {
                b[v[j]+g[i].e]=1;
                mod.push_back(make_pair(v[j]+g[i].e,c[v[j]]+g[i].co));
                v.push_back(v[j]+g[i].e);
            }
            else if(c[v[j]+g[i].e]>c[v[j]]+g[i].co)
                mod.push_back(make_pair(v[j]+g[i].e,c[v[j]]+g[i].co));
        }
        for(j=0;j<mod.size();j++)c[mod[j].first]=mod[j].second;
    }
    Min=INT_MAX;
    for(i=0;i<v.size();i++)
        if(v[i]>=m)
            Min=min(Min,c[v[i]]);
    if(Min==INT_MAX)Min=-1;
    fout<<Min;
    return 0;
}