Cod sursa(job #561815)

Utilizator morlockRadu Tatomir morlock Data 21 martie 2011 19:32:45
Problema Aliens Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("aliens.in"); ofstream out("aliens.out");
int n,p,q=1;
float v[10000], c[10000], sol[10000], prod=1, maxim=1;

void citire(int n)
{ int j=1;
	for (int i=1; i<=2*n; i++)
	{	in>>v[i]; }
	
	for (int i=1; i<=n; i++)
	{
		c[i]=v[j]/v[j+1];
		j=j+2;
	}
}

int intreg(float a)
{ int b;
  b=a;
  if (a==b) return 1; return 0;
}	

int valid(int k)
{
	for (int i=1; i<k; i++)
		if (sol[i] >= sol[i+1]) return 0; return 1;
}

void back(int k)
{ 
	if (k==p+1)
	{
		for (int i=1; i<=p; i++)
			{ prod=prod*sol[i]; out<<sol[i]<<" "; } 
		out<<"prod: "<<prod<<" ";
		if (intreg(prod) && prod > maxim ) { maxim=prod; out<<"intreg"; }
		v[q]=prod; q++;
		prod=1;
		out<<'\n';
	}
	else
	{ 
		for (int i=1; i<=n; i++)
		{
			sol[k]=c[i];
			if (valid(k)) back(k+1);
		}
	}
}

int main()
{
	in>>n;
	
	citire(n);
	
	for (p=n; p>=1; p--)
	 back(1);

	out<<maxim;
	
	for (int i=1; i<q; i++)
		if (intreg(v[i])) cout<<v[i]<<'\n';
	
	
	

in.close();
out.close();
	
return 0;
}