Pagini recente » Cod sursa (job #2885319) | Cod sursa (job #1745449) | Cod sursa (job #3232453) | Cod sursa (job #270208) | Cod sursa (job #1660863)
#include <iostream>
#include <fstream>
int min(int x, int y)
{
if(x < y) return x; else return y;
}
using namespace std;
int main()
{
ifstream fin("energii.in");
ofstream fout("energii.out");
int n, G, e[10002], c[10002], a[20002];
fin >> n >> G;
for(int i = 1; i <= n; i++)
{
fin >> e[i] >> c[i];
}
int s = 0;
for(int i = 1; i <= n; i++) s+=e[i];
if(s < G)
{
fout << "-1";
}
else
{
for(int i = 1; i <= G; i++) a[i] = 1000000;;
for(int i = 1; i <= n; i++)
for(int j = G; j >= 1; j--)
{
if(j - e[i] >= 1)
{
a[j] = min(a[j], a[j-e[i]] + c[i]);
}
else
{
a[j] = min(a[j], c[i]);
}
}
fout << a[G];
}
return 0;
}