Pagini recente » Cod sursa (job #3130753) | Cod sursa (job #28580) | Cod sursa (job #1832349) | Cod sursa (job #1301020) | Cod sursa (job #2983285)
//Ilie Dumitru
#include<cstdio>
#include<vector>
#include<bitset>
#include<algorithm>
const int NMAX=5005;
int dp[NMAX];
int N, M;
int main()
{
FILE* f=fopen("energii.in", "r"), *g=fopen("energii.out", "w");
int i, j, energie, cost, minCost;
const int inf=50000000;
minCost=inf;
fscanf(f, "%d%d", &N, &M);
for(j=0;j<M;++j)
dp[j]=inf;
for(i=0;i<N;++i)
{
fscanf(f, "%d%d", &energie, &cost);
if(energie>=M)
{
if(cost<minCost)
minCost=cost;
}
else
{
for(j=M-1;j>-1;--j)
{
if(j+energie>=M)
{
if(minCost>dp[j]+cost)
minCost=dp[j]+cost;
}
else
{
if(dp[j+energie]>dp[j]+cost)
dp[j+energie]=dp[j]+cost;
}
}
}
}
if(minCost==inf)
minCost=-1;
fprintf(g, "%d\n", minCost);
fclose(f);
fclose(g);
return 0;
}