Cod sursa(job #574596)

Utilizator isabela-oanceaOancea Maria Isabela isabela-oancea Data 7 aprilie 2011 12:28:34
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include<fstream>
using namespace std;
ifstream f("f.in");
ofstream g("f.out");
int	n,s,s1,p,j,i,x[100],v[100];
int succesor (int k)
{if (x[k]<4&&k<=n)
	{x[k]++;
	return 1;
	}
return 0;
}
int valid (int k)
{
return 1;
}
void back()
{int i,k;
k=1;
x[k]=0;
while (k>0)
	{i=0;
	while (i==0&&succesor(k))
		if (valid(k))
			i=1;
	if (i==0)
		k--;
	else
		if (k==n)
		{s=0;
			for (i=1;i<=k;i++)
				if (x[i]==3||x[k]==4)
					{if (i>1)
						{if (x[i-1]==1)
							s=s-v[i-1];
						else
							if (x[i-1]==2)
								s=s+v[i-1];
						p=v[i-1];
						}
					else
						p=1;
						j=i;
						while ((x[j]==3||x[j]==4)&&j<=k)
							{if (x[j]==3)
								p=p*v[j];
							else
								p=p/v[j];
							j++;
							}
						if (i==1)
							s=p;
						else
							if (x[i-1]==2)
								s=s-p;
							else
								s=s+p;
						i=j+1;
						}
					else
						if (x[i]==1)
							s=s+v[i];
						else
							s=s-v[i];
					
		if (s==s1)
			{for (i=1;i<=k;i++)
				{if (x[i]==1)
					g<<"+";
				if (x[i]==2)
					g<<'-';
				if (x[i]==3)
					g<<'*';
				if (x[i]==4)
					g<<'/';
				}
			g<<'\n';
			}
		}
		else
			{k++;
			x[k]=0;
			}
			
	}
}
int main()
{f>>s1>>n;
for (i=1;i<=n;i++)
	f>>v[i];
back();
f.close();
g.close();
return 0;
}