Pagini recente » Cod sursa (job #2350595) | Cod sursa (job #1057336) | Cod sursa (job #1527197) | Cod sursa (job #846936) | Cod sursa (job #1517525)
#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;
}
}
}