Pagini recente » Cod sursa (job #657510) | Cod sursa (job #779277) | Cod sursa (job #523778) | Cod sursa (job #1219363) | Cod sursa (job #1416252)
#include <cstdio>
#define MAX 300000
using namespace std;
struct generatoare{int e, c;};
generatoare v[5001];
int s[20001];
int min(int a, int b)
{
if(a>b)
return b;
return a;
}
int main()
{
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
int n, i, j, G, mini=MAX, maxi=-1;
scanf("%d%d", &n, &G);
for(i=1;i<=n;i++){
scanf("%d%d", &v[i].e, &v[i].c);
if(maxi<v[i].e)
maxi=v[i].e;
}
for(i=1;i<=n;i++)
{
for(j=20000;j>=1;j--)
if(s[j]!=0)
if(j+v[i].e<=20000)
{
if(s[j+v[i].e]!=0)
s[j+v[i].e]=min(s[j+v[i].e], s[j]+v[i].c);
else s[j+v[i].e]=s[j]+v[i].c;
}
if(s[v[i].e]==0)
s[v[i].e]=v[i].c;
}
for(i=G;i<=20000;i++)
if(s[i]!=0)
if(mini>s[i])
mini=s[i];
if(mini==MAX)
printf("-1");
else printf("%d", mini);
return 0;
}