Cod sursa(job #1160481)

Utilizator YoChinezuWeng Mihai Alexandru YoChinezu Data 30 martie 2014 16:10:14
Problema Patrate 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>

using namespace std;

struct point{
    int x,y,z;
};

point v[50*50+5];

bool cmp(point a,point b){
    if(a.x==b.x)   return a.y<b.y;
    return a.x<b.x;
}

bool solve(point aux,point auy,int n){
    point a,b;
    
    a.x=auy.x+aux.y-auy.y;
    a.y=auy.y+auy.x-aux.x;
    b.x=aux.x+aux.y-auy.y;
    b.y=aux.y+auy.x-aux.x;
    if(a.z!=aux.z||b.z!=aux.z)
        return 0;
    return 1;
}

int main(){
    int n,i,j,m,x,sol=0;
    scanf("%d",&n);
    
    m=0;
    
    for(i=n;i>=1;--i){
        for(j=1;j<=n;++j){
            scanf("%d",&x);
            ++m;
            v[m].x=i;
            v[m].y=j;
            v[m].z=x;
        }
    }
    
    for(i=1;i<m;++i){
        for(j=i+1;j<=m;++j){
            if(v[i].z==v[j].z)
                sol+=solve(v[i],v[j],m);
        }
    }
    
    printf("%d\n",sol/2);
    
    return 0;
}