Pagini recente » Cod sursa (job #1783508) | Cod sursa (job #1106256) | Cod sursa (job #131934) | Cod sursa (job #888248) | Cod sursa (job #945264)
Cod sursa(job #945264)
#include <iostream>
#include <cstdio>
using namespace std;
int best[1010][5001],energie[1010],cost[1010];
int minim(int a,int b)
{
if(a<b)
return a;
return b;
}
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
int n,s,i,j,se=0;
cin>>n>>s;
for(i=1;i<=n;i++)
cin>>energie[i]>>cost[i],se+=energie[i];
if(se<s)
{
cout<<-1;
return 0;
}
for(i=1;i<=s;i++)
best[0][i]=2000000000;
for(j=1;j<=n;j++)
best[j][0]=2000000000;
for(i=1;i<=n;i++)
for(j=1;j<=s;j++)
if(energie[i]>=j)
best[i][j]=minim(best[i-1][j],cost[i]);
else
best[i][j]=minim(best[i-1][j],best[i-1][j-energie[i]+cost[i]]);
int ans=0;
for(j=s;j>=1;j--)
if(best[n][j]>ans)
ans=best[n][j];
cout<<ans;
return 0;
}