#include <iostream>
using namespace std;
int main()
{
int row_col_size , K_size , result_row , result_column;
cout<< "Upisi broj redaka i stupaca N? : ";
cin>> row_col_size;
cout<< endl << "Upisi velicinu matrice koja se vrti K(1 - 1000)?: ";
cin>> K_size;
cout<< endl << "Upisi broj trazenog retka i?";
cin>> result_row;
cout<< endl << "Upisi broj trazenog stupca j?";
cin>> result_column;
int array_size = row_col_size* row_col_size;
int ROW_MAX = row_col_size;
int COL_MAX = row_col_size;
int ROW_MIN = 0;
int COL_MIN = 0;
int row = 0;
int column = 0;
int K = 0;
int** data;
data = new int*[row_col_size];
for(int i=0 ; i < row_col_size; ++i)
{
data[i] = new int[row_col_size];
}
bool isArrayFinished = false;
while(!isArrayFinished )
{
static int counter = 0;
if(row == ROW_MIN && column < COL_MAX)
{
data[row][column] = K;
column++;
K++;
}
else
if(column == COL_MAX && row < ROW_MAX-1)
{
row++;
data[row][column-1] = K;
K++;
}
else
if(row == ROW_MAX-1 && column > COL_MIN+1)
{
column--;
data[row][column-1] = K;
K++;
}
else
if(column == COL_MIN+1 && row > ROW_MIN+1)
{
data[row-1][column-1] = K;
row--;
K++;
}
else
{
ROW_MAX--;
COL_MAX--;
ROW_MIN++;
COL_MIN++;
counter--;
}
counter++;
if(counter == array_size)
isArrayFinished = true;
if(K == K_size)
K = 0;
}
//otkomentiraj ako ne zelis ispis /*
/* cout<< endl;
for(int i=0 ; i < row_col_size; i++)
{
for(int j=0 ; j < row_col_size; j++)
{
cout<< " " << data[i][j];
}
cout<< endl;
} */
// */
cout<< endl << "Trazeni broj : " << data[result_row-1][result_column-1];
for(int i=0 ; i < row_col_size; ++i)
{
delete []data[i];
}
delete []data;
return 0;
}