Pagini recente » Cod sursa (job #1672174) | Cod sursa (job #107376) | Cod sursa (job #2086299) | Cod sursa (job #162122) | Cod sursa (job #2839997)
#include <fstream>
using namespace std;
const int N = 1000;
const int K = 5001;
int n, k, e[N], c[N], cost[K];
int main()
{
ifstream in("energii.in");
ofstream out("energii.out");
in >> n >> k;
for (int i = 0; i < n; i++)
{
in >> e[i] >> c[i];
}
///initializarea
for (int j = 1; j <= k; j++)
{
cost[j] = -1;///cost[j]=costul min necesar obtinerii energiei j (daca j<k)
///cost[k]=costul minim necesar obtinerii energiei CEL PUTIN k
}
cost[0] = 0;
for (int i = 0; i < n; i++)
{
for (int j = k - 1; j >= 0; j--)
{
if (cost[j] != -1)///am o configuratie de generatoare cu suma energiilor j
{
int energia = min(k, j + e[i]);///chiar daca depasesc k, voi retine rez in cost[k]
if (cost[energia] == -1 || cost[j] + c[i] < cost[energia])
{
cost[energia] = cost[j] + c[i];
}
}
}
}
out << cost[k];
in.close();
out.close();
return 0;
}