Cod sursa(job #145334)

Utilizator katakunaCazacu Alexandru katakuna Data 28 februarie 2008 18:55:05
Problema Patrate 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include<stdio.h>
int n,i,j,ii,jj,m[40][40],c,x,y,nr;


int main(){

FILE *f=fopen("patrate.in","r");
fscanf(f,"%d",&n);

  for(i=1;i<=n;i++){
    for(j=1;j<=n;j++){
    fscanf(f,"%d",&m[i][j]);
    }
  }

fclose(f);


  for(i=1;i<=n;i++){
    for(j=1;j<=n;j++){
    c=m[i][j];

       for(ii=i+1;ii<=n;ii++){

	 for(jj=j+1;jj<=n;jj++){

	   if(m[ii][jj]==c){

	     if( (ii-i)%2==1 ){
		if( (jj-j)%2==1 ){

		  x=(ii-i)/2;
		  y=(jj-j)/2+1;


		  if(m[ i+x-y+1  ][ j+x+y ] ==c&&m[ i+x+y ][ jj-x-y-1 ]==c&&i+x-y+1<=n&&j+x+y<=n&&i+x+y<=n&&jj-x-y-1>=1){
		  nr++;
		  }


		}

	     }

	     else{

	       if( (jj-j)%2==0 ){
	       x=(ii-i)/2;
	       y=(jj-j)/2;

		 if(m[ i+x-y ][ i+y+x ]==c&&m[ i+x+y ][ i+y-x ]==c&&i+x-y<=n&&i+y+x<=n&&i+x+y<=n&&i+y-x>=1){
		 nr++;
		 }

	       }


	     }



	   }


	 }

       }



    for(jj=j+1;jj<=n;jj++){

    
     if(m[i][jj]==c){

      if( (jj-j)%2==0 ){

	  if(m[ i - ((jj-j)/2) ][ j + ((jj-j)/2) ]==c&&m[ i + ((jj-j)/2) ][ j + ((jj-j)/2) ]==c&&i - ((jj-j)/2)>=1&&i + ((jj-j)/2)<=n){
	  nr++;
	  }

      }

     }

    }




    }

  }




return 0;
}