Cod sursa(job #306651)

Utilizator oancea_cristianOANCEA CRISTIAN oancea_cristian Data 21 aprilie 2009 19:08:42
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.88 kb
#include<fstream.h>
 void main()
{
  ifstream f("cartele.in");
  ofstream g("cartele.out");

  int s[50][50],a[50][50],b[50][50], aux[50][50];
  int n,c,i,j,pot;

  f>>n>>c;

  for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
      f>>s[i][j];    // matricea sablon


   int ok=1;
   pot=0;

 for(int k=1;k<=c;k++)
 {
    ok=1;
    pot=0;

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

    for(i=1;i<=n;i++)
      for(j=1;j<=n;j++)
	if(s[i][j]!=a[i][j]) ok=0;

      if(ok==1)   pot=1;



	 else{	 ok=1;
		 for(i=1;i<=n;i++)
		   for(j=1;j<=n;j++)
		     {
		      b[i][j]=a[j][n-i+1];  //intorc matricea la 90
		      aux[i][j]=a[j][n-i+1];
		     }


		 for(i=1;i<=n;i++)
		   for(j=1;j<=n;j++)
		    if(b[i][j]!=s[i][j]) ok=0;   //verific cu sablonul

		 if(ok==1) pot=1;

		 ok=1;
		 for(i=1;i<=n;i++)
		   for(j=1;j<=n;j++)
		    {
		      b[i][j]=aux[j][n-i+1];  //intorc matricea la,180
		      a[i][j]=aux[j][n-i+1];
		    }

		 for(i=1;i<=n;i++)
		   for(j=1;j<=n;j++)
		    if(b[i][j]!=s[i][j]) ok=0;    //verific cu sablonul

		 if(ok==1) pot=1;

		  ok=1;
	       for(i=1;i<=n;i++)
		 for(j=1;j<=n;j++)
		   {
		    b[i][j]=a[j][n-i+1]; //intorc pe rand matricea la 270
		    aux[i][j]=b[i][j];
		   }

		for(i=1;i<=n;i++)
		   for(j=1;j<=n;j++)
		    if(b[i][j]!=s[i][j]) ok=0;   //verific cu sablonul


		 if(ok==1) pot=1;



		 if(pot!=1) {
			      for(i=1;i<=n;i++)
				 for(j=1;j<=n;j++)
				   a[i][j]=aux[j][n-i+1]; //intorc la loc matricea



			      ok=1;
			      for(i=1;i<=n;i++)
				for(j=1;j<=n;j++)
				 {
				 b[i][j]=a[n-i][n-j];   //intorc pe dos matricea
				 aux[i][j]=b[i][j];
				 }

			       for(i=1;i<=n;i++)
				 for(j=1;j<=n;j++)
				   if(s[i][j]!=b[i][j]) ok=0; //verific cu sablonul

				 if(ok==1) pot=1;


				 ok=1;
				 for(i=1;i<=n;i++)
				   for(j=1;j<=n;j++)        //intorc matricea la 90 de grade
				     {
				     b[i][j]=aux[j][n-i+1];
				     a[i][j]=b[i][j];
				     }


				  for(i=1;i<=n;i++)
				    for(j=1;j<=n;j++)
				     if(b[i][j]!=s[i][j]) ok=0;

				       if(ok==1) pot=1;


				 ok=1;
				 for(i=1;i<=n;i++)
				   for(j=1;j<=n;j++)        //intorc matricea la 180 de grade
				     {
				      b[i][j]=a[j][n-i+1];
				      aux[i][j]=b[i][j];
				     }


				  for(i=1;i<=n;i++)
				    for(j=1;j<=n;j++)
				     if(b[i][j]!=s[i][j]) ok=0;

				       if(ok==1) pot=1;



				 ok=1;
				 for(i=1;i<=n;i++)
				   for(j=1;j<=n;j++)        //intorc matricea la 270 de grade
				      b[i][j]=aux[j][n-i+1];

				  for(i=1;i<=n;i++)
				    for(j=1;j<=n;j++)
				     if(b[i][j]!=s[i][j]) ok=0;

				       if(ok==1) pot=1;

			    }


		}

	  if(pot==1) { g<<" "<<1;
		       g<<"\n";
		     }
	       else  { g<<" "<<0;
		       g<<"\n";
		     }


      }



   f.close();
   g.close();


}