Cod sursa(job #324279)

Utilizator mihaionlyMihai Jiplea mihaionly Data 15 iunie 2009 12:47:09
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#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;
 }