Cod sursa(job #19336)

Utilizator RutZapGruia Radu RutZap Data 19 februarie 2007 12:28:11
Problema Ghiozdan Scor 42
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream.h>
ifstream f("ghiozdan.in");
ofstream f2("ghiozdan.out");

int n,g, o[20000];



void solve (unsigned int i, unsigned int gr[20000], unsigned int nr[20000])
{
int val;
if (i==n) {
	gr[i]=o[i];
	nr[i]=1;
	}
else { for (int j=n;j>i;j--) {
			    if (((o[i]+gr[j])<=g)&&((o[i]+gr[j])>gr[i])) {
						gr[i]=o[i]+gr[j];
						nr[i]=nr[j]+1;
						}
			    }
     if (gr[i]==0) {
		 gr[i]=o[i];
		 nr[i]=1;
		 }
     }

}

int main()
{

f>>n>>g;
unsigned int i,j,aux, aux2,gr[20000], nr[20000];

for (i=1;i<=n;i++) f>>o[i];

for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
if (o[i]>o[j]) {
	       aux=o[i];
	       o[i]=o[j];
	       o[j]=aux;
	       }

for (i=n;i>=1;i--) solve(i, gr, nr);
int poz;

aux=0;
for (i=1;i<=n;i++) if ((gr[i]<=g)&&(gr[i]>aux)) { aux=gr[i];poz=i;}

aux2=nr[poz];
for (i=1;i<=n;i++) if ((gr[i]==aux)&&(nr[i]<aux2)) {aux2=nr[i];poz=i;}


f2<<gr[poz]<<" "<<nr[poz];

f.close();
f2.close();
return 0;
}