Cod sursa(job #1400161)

Utilizator razvanlgu31Razvan Lungu razvanlgu31 Data 25 martie 2015 09:48:45
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <fstream>
#include <math.h>
using namespace std;
ifstream fin("lacuri.in");
ofstream fout("lacuri.out");
short int a[180][180],n,i,j,p,u,k,nrp,y;
struct Pozitie {short int lin,col;}c[31000],di,df,x;
int dl[5]={0,0,0,1,0};
int dc[5]={0,1,-1,0,-1};
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    fin>>a[i][j];
        for(i=0;i<=n+1;i++)
    {
        a[i][0]=0;
        a[i][n+1]=0;
        a[0][i]=0;
        a[n+1][i]=0;
    }
    for(k=1;k<=n;k++)
        for(j=1;j<=n;j++)
    {
    if(a[k][j]==1)
        {
    c[1].lin=k;
    c[1].col=j;
    p=u=1;
    a[k][j]=-1;
    while(p<=u)
    {
        di=c[p];
        p++;

            for(i=1;i<=3;i++)
        {
            df.lin=di.lin+dl[i];
            df.col=di.col+dc[i];
            if(a[df.lin][df.col]==1)
            {
                a[df.lin][df.col]=-1;
                c[++u]=df;
                break;
            }
        }
    }
    y=sqrt(u);
    if((y*y)==u &&  (  (c[u].lin==(k+y-1) && c[u].col==j) || (c[u].lin==(k+y-1) && c[u].col==(j+y-1)  )  ) )nrp++;
    else
        ver=1;
    }
    }
    fout<<nrp<<'\n';
    if(ver==0)
    {
    i=j=1;
    while(i!=n && j!=n)
    {
        fout<<i<<" "<<j<<\n"
        if(a[i+1][j+1]==0)
            else

    }
    }
    return 0;
 }