Pagini recente » Cod sursa (job #2281877) | Cod sursa (job #2245899) | Cod sursa (job #2810732) | Cod sursa (job #1036414) | Cod sursa (job #1494045)
#include<fstream>
#define MaxN 1001
#define MaxS 5001
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int n, s, a[MaxN], cost[MaxN];
int c[MaxS];
int minn = 999999999;
void citire()
{
fin >> n >> s;
for (int k=1; k<=n; ++k)
fin >> a[k] >> cost[k];
}
int main()
{
int i, j, k;
citire();
for (j=1; j<=s; ++j)
c[j] = 1e9;
c[0] = 0;
for (i=1; i<=n; ++i)
for (j=s; j>=0; --j)
if (c[j] < 1e9)
{
if (j + a[i] > s)
if (minn > c[j] + cost[i])
minn = c[j] + cost[i];
if (j + a[i] <= s)
if (c[j + a[i]] > c[j] + cost[i])
c[j + a[i]] = c[j] + cost[i];
}
if (c[s] == 1e9 && minn == 999999999)
fout << -1;
else
fout << (minn < c[s] ? minn : (c[s] == -1 ? minn : c[s]));
return 0;
}