Cod sursa(job #1100359)

Utilizator rughibemBelcineanu Alexandru Ioan rughibem Data 6 februarie 2014 20:28:47
Problema Patrate2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include<stdio.h>
FILE *f=fopen("patrate.in","r"), *g=fopen("patrate.out","w");

long int n, i, j, a[105][105], x1, y1, x2, y2, x3, y3, x4, y4, nr=0, A, B;

void proba(){

        if( 1<=x3 && x3<=n && 1<=y3 && y3<=n && 1<=x4 && x4<=n && 1<=y4 && y4<=n

        && !(x1==x2 && y1==y2) && !(x1==x3 && y1==y3) && !(x1==x4 && y1==y4)
        && !(x2==x3 && y2==y3) && !(x2==x4 && y2==y4) && !(x3==x4 && y3==y4)

        ){

        if( a[x1][y1]==a[x2][y2] && a[x2][y2]==a[x3][y3] && a[x3][y3]==a[x4][y4] ){nr++;
            //fprintf(g,"%ld %ld %ld %ld\n",4*(x1-1)+y1,4*(x2-1)+y2,4*(x3-1)+y3,4*(x4-1)+y4);
        }


        }


}


int main(){


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


    for(x1=1;x1<=n;x1++){
        for(y1=1;y1<=n;y1++){
            for(x2=1;x2<=n;x2++){
                for(y2=1;y2<=n;y2++){

                    if( x2>x1 || (x1==x2 && y2>y1) ){

                        A=x1-x2; B=y1-y2;

                        y3=y2-A; x3=x2+B;
                        y4=y1-A; x4=x1+B;
                        proba();

                        y3=y2+A; x3=x2-B;
                        y4=y1+A; x4=x1-B;
                        proba();

                    }

                }
            }
        }
    }
    fprintf(g,"%ld\n",nr/4);

return 0;
}