Pagini recente » Cod sursa (job #327129) | Cod sursa (job #3144005) | Cod sursa (job #195992) | Cod sursa (job #1579815) | Cod sursa (job #2060904)
#include <bits/stdc++.h>
using namespace std;
ifstream in("tablete.in");
ofstream out("tablete.out");
int n, k;
int arr[1005][1005];
void sortare( int col, int left = 1, int right = n ){
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2][col];
while (i <= j) {
while (arr[i][col] < pivot)
i++;
while (arr[j][col] > pivot)
j--;
if (i <= j) {
tmp = arr[i][col];
arr[i][col] = arr[j][col];
arr[j][col] = tmp;
i++;
j--;
}
}
if (left < j)
sortare(col, left, j);
if (i < right)
sortare(col, i, right);
}
void afisare(){
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++)
out<<arr[i][j]<<" ";
out<<"\n";
}
}
int main()
{
in>>n>>k;
if( n % 2 == 0 && k % 2 == 0 ){
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
arr[i][j] = (i - 1)*n + j;
afisare();
return 0;
}
if( n % 2 == 1 && k % 2 == 0 ){
for(int i = 1; i <= n; i++)
for(int j = 2; j <= n; j++)
arr[i][j] = (i - 1)*n + j + n - i;
for(int j = 1; j <= n; j++)
arr[j][1] = j;
afisare();
return 0;
}
if( n % 2 == 0 && k % 2 == 1 ){
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
arr[j][i] = (i - 1)*n + j;
for(int i = 1; i < n; i++)
if( arr[i][k] % 2 == 1 )
swap( arr[i][k], arr[i + 1][k - 1] );
afisare();
return 0;
}
if( n % 2 == 1 && k % 2 == 1 ){
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
arr[j][i] = (i - 1)*n + j;
for(int i = 1; i < n; i++)
if( arr[i][k] % 2 == 1 )
swap( arr[i][k], arr[i + 2][k - 1] );
swap( arr[n][k], arr[n - 2][k + 1] );
sortare( k - 1 );
sortare( k );
sortare( k + 1 );
afisare();
return 0;
}
return 0;
}