Pagini recente » Cod sursa (job #1808331) | Cod sursa (job #296051) | Cod sursa (job #3005655) | Cod sursa (job #2246170) | Cod sursa (job #317444)
Cod sursa(job #317444)
#include <fstream>
#include <string.h>
using namespace std;
#define dim 1001
ifstream f("energii.in");
ofstream g2("energii.out");
int e[dim],c[dim],w,g,cmax[10*dim];
bool uz[10001][dim];
void read()
{
f>>g>>w;
for(int i=1;i<=g;i++)
f>>e[i]>>c[i];
}
void dinamic()
{
int i,j,k;
memset(cmax,-1,sizeof(cmax));
cmax[0]=0;
for(k=1;k<=w;k++)
{
for(i=1;i<=g;i++)
if(k-e[i]>=0&&(cmax[k-e[i]]!=-1)&&uz[k-e[i]][i]==0)
{
if((cmax[k]==-1&&cmax[k-e[i]]!=-1)||cmax[k]>cmax[k-e[i]]+c[i])
{
cmax[k]=cmax[k-e[i]]+c[i];
for(j=1;j<=g;j++) uz[k][j]=uz[k-e[i]][j];
uz[k][i]=1;
}
}
}
if(k==w&&cmax[k]==-1)
w++;
}
void show()
{
g2<<cmax[w];
}
int main()
{
read();
dinamic();
show();
return 0;
}