Pagini recente » Cod sursa (job #482601) | Cod sursa (job #2675616) | Cod sursa (job #2558925) | Cod sursa (job #224541) | Cod sursa (job #324279)
Cod sursa(job #324279)
#include <fstream>
#include <string>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
typedef struct
{
int w,c;
} Generator;
Generator G[1001];
int W[5001],I[5001],uz[5001],n,w;
void read()
{
f>>n>>w;
for(int i=1;i<=n;i++)
{
f>>G[i].w>>G[i].c;
}
memset(W,-1,sizeof(W));
I[0]=1;
W[0]=0;
}
int uzat(int j,int i)
{
int k=i-G[j].w;
while(k)
{
if(I[k]==j)
return 1;
k-=G[I[k]].w;
}
return 0;
}
void solve()
{
int i,j;
for(i=1;i<=w;i++)
{
for(j=1;j<=n;j++)
{
if(i-G[j].w>=0&&I[i-G[j].w]&&(W[i-G[j].w]+G[j].c<W[i]||W[i]==-1)&&!uzat(j,i))
{
W[i]=W[i-G[j].w]+G[j].c;
I[i]=j;
}
}
}
}
int main()
{
read();
solve();
g<<W[w];
return 0;
}