Cod sursa(job #62489)

Utilizator bacerandreiBacer Andrei bacerandrei Data 22 mai 2007 20:54:29
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<fstream.h>
#define NMax 10001
#define MaxG 10001
int n,GMax;
int c[NMax],g[NMax];
int CMax[MaxG],Uz[500][500];

void Citire();
void Rezolvare();
void Afisare();

int main()
{
 Citire();
 Rezolvare();
 Afisare();
 return 0;
}

void Citire()
{
 ifstream fin("energii.in");
 int i;
 fin>>n>>GMax;
 for(i=1;i<=n;i++)
 	fin>>g[i]>>c[i];
  fin.close();
}

void Rezolvare()
{
 int S,k,i;
 for(S=1;S<=GMax;S++)
 CMax[S]=-1;
 for(S=1;S<=GMax;S++)
 	for(i=1;i<=n;i++)
   	if(g[i]<=S&&CMax[S-g[i]]!=-1&&!Uz[S-g[i]][i])
      	if(CMax[S]<c[i]+CMax[S-g[i]])
         {
          CMax[S]=c[i]+CMax[S-g[i]];
          for(k=1;k<=n;k++)
          	Uz[S][k]=Uz[S-g[i]][k];
            Uz[S][i]=1;
          }
}

void Afisare()
{
 ofstream fout("energii.out");
 fout<<CMax[GMax]<<"\n";
// for(int k=1;k<=n;k++)
 //	if(Uz[GMax][k])
  // fout<<k<<" "; 
 fout.close();
}