Pagini recente » Cod sursa (job #2396865) | Cod sursa (job #2511475) | Cod sursa (job #2799622) | Cod sursa (job #2892696) | Cod sursa (job #2031610)
#include <fstream>
using namespace std;
ifstream fin("spirala.in");
ofstream fout("spirala.out");
short n, m, v[101][101], x, a[100*100+2], b[100*100+2], i, u, j, dif;
short f[101][101];
void rec(int x){
if(f[x][x] == 0){
if(x!=1)
if(v[x][x+1] - v[x][x] != dif && x!= n-x+1){
fout<<"NU\n"<<v[x][x]<<" "<<v[x+1][x];
return;
}
else
f[x][x] = 1, f[x][x+1] = 1, a[++u] = v[x][x], a[++u] = v[x][x+1];
if(x==1)
f[1][1] = 1, f[1][2] = 1;
for(short j=x+2;j<=m-x+1;j++)
if(v[x][j] - v[x][j-1] != dif){
fout<<"NU\n"<<v[x][j-1]<<" "<<v[x][j];
return;
}
else
f[x][j] = 1, a[++u] = v[x][j];
if(v[x+1][m-x+1] - v[x][m-x+1] != dif && x!=m-x+1){
fout<<"NU\n"<<v[x][m-x+1]<<" "<<v[x+1][m-x+1];
return;
}
else
f[x+1][m-x+1] = 1, a[++u] = v[x+1][m-x+1];
for(short i=x+2;i<=n-x+1;i++)
if(v[i][m-x+1] - v[i-1][m-x+1] != dif && x!=m-x+1){
fout<<"NU\n"<<v[i-1][m-x+1]<<" "<<v[i][m-x+1];
return;
}
else
f[i][m-x+1] = 1, a[++u] = v[i][m-x+1];
if(v[n-x+1][m-x] - v[n-x+1][m-x+1] != dif){
fout<<"NU\n"<<v[n-x+1][m-x+1]<<" "<<v[n-x+1][m-x];
return;
}
else
f[n-x+1][m-x] = 1, a[++u] = v[n-x+1][m-x];
for(short j=m-x-1;j>=x && j<=m;j--)
if(v[n-x+1][j] - v[n-x+1][j+1] != dif){
fout<<"NU\n"<<v[n-x+1][j+1]<<" "<<v[n-x+1][j];
return;
}
else
f[n-x+1][j] = 1, a[++u] = v[n-x+1][j];
if(v[n-x][x] - v[n-x+1][x] != dif){
fout<<"NU\n"<<v[n-x+1][x]<<" "<<v[n-x][x];
return;
}
else
f[n-x][x] = 1, a[++u] = v[n-x][x];
for(short i=n-x+2; i>x && i<=n; i--)
if(v[i][x] - v[i+1][x] != dif){
fout<<"NU\n"<<v[i+1][x]<<" "<<v[i][x];
return;
}
else
f[i][x] = 1, a[++u] = v[i][x];
rec(x+1);
}
else
return;
}
int main(){
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
fin>>v[i][j];
u=2;
a[1] = v[1][1];
a[2] = v[1][2];
dif = v[1][2] - v[1][1];
rec(1);
fout<<a[u];
return 0;
}