Cod sursa(job #1517525)

Utilizator ducu34Albastroiu Radu Gabriel ducu34 Data 4 noiembrie 2015 15:18:53
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.46 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("spirala.in");
ofstream fout("spirala.out");
int a[105][105],i,j,n,m,DIF,nr,ctrl;
bool b[105][105];
void sus(int &x,int &y)
{
    while(b[x-1][y]==0 && x-1>=1)
    {
        if(a[x-1][y]-a[x][y]!=DIF)
        {
            ctrl=1;
            fout<<"NU\n"<<a[x][y]<<" "<<a[x-1][y];
            return;
        }
        else
        {
            x--;
            b[x][y]=1;
            nr++;
        }
    }
}
void jos(int &x,int &y)
{
    while(b[x+1][y]==0 && x+1<=n)
    {
        if(a[x+1][y]-a[x][y]!=DIF)
        {
            ctrl=1;
            fout<<"NU\n"<<a[x][y]<<" "<<a[x+1][y];
            return;
        }
        else
        {
            x++;
            b[x][y]=1;
            nr++;
        }
    }
}
void dreapta(int &x,int &y)
{
    while(b[x][y+1]==0 && y+1<=m)
    {
        if(a[x][y+1]-a[x][y]!=DIF)
        {
            ctrl=1;
            fout<<"NU\n"<<a[x][y]<<" "<<a[x][y+1];
            return;
        }
        else
        {
            y++;
            b[x][y]=1;
            nr++;
        }
    }
}
void stanga(int &x,int &y)
{
    while(b[x][y-1]==0 && y-1>=1)
    {
        if(a[x][y-1]-a[x][y]!=DIF)
        {
            ctrl=1;
            fout<<"NU\n"<<a[x][y]<<" "<<a[x][y-1];
            return;
        }
        else
        {
            y--;
            b[x][y]=1;
            nr++;
        }
    }
}
int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            fin>>a[i][j];
    for(i=0;i<=n+1;i++)
    {
        a[i][0]=1;
        a[i][m+1]=1;
    }
    for(j=0;j<=m+1;j++)
    {
        b[0][j]=1;
        b[n+1][j]=1;
    }
    DIF=a[1][2]-a[1][1];
    i=1;j=1;b[1][1]=1;nr=1;
    while(1)
    {
        dreapta(i,j);

        if(ctrl==1)
            break;
        if(nr==n*m)
        {
            fout<<"DA\n"<<a[i][j];
            break;
        }

        jos(i,j);

        if(ctrl==1)
            break;
        if(nr==n*m)
        {
            fout<<"DA\n"<<a[i][j];
            break;
        }

        stanga(i,j);

        if(ctrl==1)
            break;
        if(nr==n*m)
        {
            fout<<"DA\n"<<a[i][j];
            break;
        }

        sus(i,j);

        if(ctrl==1)
            break;
        if(nr==n*m)
        {
            fout<<"DA\n"<<a[i][j];
            break;
        }
    }
}