Cod sursa(job #131626)

Utilizator LowArmourVasile LowArmour Data 4 februarie 2008 11:46:22
Problema Perle Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <fstream.h>
ifstream f ("perle.in");
ofstream g ("perle.out");
int a[10][100],n;
void citire ()
	{
	int m,j;
	f>>n;
	for(int i=1;i<=n;i++){
			     f>>m;
			     for(j=1;j<=m;j++)
					      f>>a[i][j];
			     }
	}
int A (int x, int y);
int B (int x, int y);
int C (int x, int y);
void main ()
{
citire();
for(int i=1;i<=n;i++)
		     if(a[i][2]==0)
				   g<<"1"<<endl;
			   else    {
				   if(a[i][1]==1){
						 if(B(i,1)==1)
							      g<<"1"<<endl;
						      else
							      if(C(i,1)==1)
									  g<<"1"<<endl;
								  else
								      g<<"0"<<endl;
						 }
				   if(a[i][1]==2)
						 g<<B(i,1)<<endl;

				   if(a[i][1]==3)
						 g<<C(i,1)<<endl;
				   }
}
int A (int x, int y)
	{
	if(a[x][y]==0)
		      return 0;
	return 1;
	}
int B (int x, int y)
	{
	if(a[x][y]==0)
		      return 0;
	if(a[x][y]==2)
		      return B(x,y+1);
	if(a[x][y]==1){
		      if(A(x,y+1)==1  &&
			 a[x][y+2]==3 &&
			 A(x,y+3)==1  &&
			 C(x,y+4)==1)
				     return 1;
			 else
			     return 0;
		      }
	return 0;
	}
int C (int x, int y)
	{
	if(a[x][y]==0)
		      return 0;
	if(a[x][y]==2)
		      return 1;
	if(a[x][y]==3){
		      if(B(x,y+1)==1 &&
			 C(x,y+2)==1)
				     return 1;
			    else
				return 0;
		      }
	if(a[x][y+1]==2 &&
	   A(x,y+2)==1)
		       return 1;
		else
		    return 0;
	}