Pagini recente » Cod sursa (job #2120330) | Cod sursa (job #2383466) | Cod sursa (job #992666) | Cod sursa (job #368224) | Cod sursa (job #14798)
Cod sursa(job #14798)
#include <cstdio>
#include <algorithm>
#include <string>
using namespace std;
int dp[1024][5120], n, a[1024], b[1024], S;
void citire()
{
freopen("energii.in", "r",stdin);
scanf("%d\n", &n);
scanf("%d\n", &S);
for(int i=1;i<=n;i++) scanf("%d %d\n", &a[i], &b[i]);
}
void dynamic()
{
int i, j;
//memset(dp, 0x3f3f3f3f, sizeof(dp));
for(i=1;i<=n;i++)
{
dp[1][a[i]]=0x3f3f3f3f;
dp[1][a[i]]=min(dp[1][a[i]], b[i]);
}
//for(i=1;i<=10;i++) printf("%d ", dp[1][i]);
//printf("\n");
for(i=0;i<=n;i++)
for(j=0;j<=S;j++) if(dp[i][j]==0) dp[i][j]=0x3f3f3f3f;
for(i=2;i<=n;i++)
for(j=0;j<=S;j++)
{
dp[i][j]=dp[i-1][j];
if(j-a[i]>=0) dp[i][j]=min(dp[i][j], dp[i-1][j-a[i]]+b[i]);
}
freopen("energii.out", "w", stdout);
/*
for(i=1;i<=n;i++)
{
for(j=0;j<=S;j++)printf("%d ", dp[i][j]);
printf("\n");
}
*/
printf("%d\n", dp[n][S]);
}
int main()
{
citire();
dynamic();
return 0;
}