Pagini recente » Cod sursa (job #2911479) | Cod sursa (job #1582609) | Cod sursa (job #177475) | Istoria paginii runda/info_cnmv | Cod sursa (job #1423024)
#include <iostream>
#include<stdio.h>
#include<limits.h>
#define IMAX 100000
using namespace std;
int g,w;
int i,j;
int a[IMAX],b[IMAX],d[IMAX];
int maxfol;
int minim=INT_MAX;
void citire()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d",&g);
scanf("%d",&w);
for(i=0;i<g;i++)
scanf("%d %d",&a[i],&b[i]);
d[0]=0;
}
void rezolvare()
{
for(i=0;i<g;i++)
for(j=maxfol;j>=0;j--)
if((d[j]!=0||j==0)&&(d[j]+b[i]<d[j+a[i]]||d[j+a[i]]==0))
{
if(j+a[i]>=w&&d[j]+b[i]<minim)
minim=d[j]+b[i];
d[j+a[i]]=d[j]+b[i];
if(j+a[i]>maxfol)
{
maxfol=j+a[i];
if(maxfol>w)
maxfol=w;
}
}
}
void afisare()
{
int i;
/* for(i=1;i<=w;i++)
printf("%d ",d[i]);*/
printf("%d\n",minim);
}
int main()
{
citire();
rezolvare();
afisare();
return 0;
}