Pagini recente » Cod sursa (job #1655365) | Cod sursa (job #2163665) | Cod sursa (job #2744493) | Cod sursa (job #1111994) | Cod sursa (job #1914136)
#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;
}