Pagini recente » Cod sursa (job #2635525) | Cod sursa (job #2416745) | Cod sursa (job #1659545) | Cod sursa (job #256571) | Cod sursa (job #2471756)
#include<bits/stdc++.h>
using namespace std;
#define INF 99999999
ifstream in("energii.in");
ofstream out("energii.out");
int elemente,profit[1001],cost[1001];
int capacitate;
void read()
{
in>>elemente>>capacitate;
for(int i=0; i<elemente; i++)
{
in>>profit[i]>>cost[i];
}
}
int dp[1002][5002];
int knapsack(int index,int cap)
{
if(index==-1 && cap>0)
{
return 99999999;
}
if(cap<=0)
{
return 0;
}
else
{
int a=knapsack(index-1,cap);
int b=cost[index]+knapsack(index-1,cap-profit[index]);
return min(a,b);
}
}
int dpp()
{
for(int i=0; i<elemente; i++)
{
for(int k=0; k<=capacitate; k++)
{
if(i==0)
{
if(profit[i]<k)
{
dp[i][k]=INF;
}
else
dp[i][k]=cost[0];
}
else
{
int rest=k-profit[i];
int a=0;
if(rest>0)
a=dp[i-1][rest];
dp[i][k]=min(cost[i]+a, dp[i-1][k]);
}
}
}
int result=dp[elemente-1][capacitate];
if(result==INF)
out<<-1;
else
out<<result;
}
int main()
{
read();
dpp();
}