Cod sursa(job #206639)

Utilizator MciprianMMciprianM MciprianM Data 8 septembrie 2008 11:32:34
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<fstream>    
using namespace std;    
int viz[1000],cost[20009];    
int main(){    
  int G, W, i, E[1000], C[1000],j,co,imin,min,ok;    
  ifstream f("energii.in");    
  f>>G>>W;    
  for(i=0;i<G;i++)    
    f>>E[i]>>C[i];    
  f.close();    
  for(i=0;i<10009;i++)    
    cost[i]=10000099;    
  min=10000099;    
  for(i=0;i<10009;i++){    
    ok=0;    
    imin=-1;  
    for(j=0;j<G;j++){    
      if(!viz[j]){    
        ok=1;    
        if(E[j]<=i){    
          co=cost[i-E[j]]+C[j];    
          if(co<cost[i]){    
            cost[i]=co;    
            imin=j;    
          }    
        }    
      }    
    }    
    if(cost[i]<min&&i>=W)    
      min=cost[i];    
    if(imin!=-1) viz[imin]=1;  
    if(!ok){    
      if(min==10000099){    
        ofstream g("energii.out");    
        g<<"-1\n";    
        g.close();    
      }    
      else{    
        ofstream g("energii.out");    
        g<<min<<'\n';    
        g.close();    
      }    
    }    
   // if(min>cost[i])  min=cost[i];    
  }    
  ofstream g("energii.out");    
  g<<min<<'\n';    
  g.close();    
  return 0;    
}