#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int I(int k)
{
    return k%3+2*((k/3)%2)*(1-k%3);
}

int J(int k)
{
    return k/3;
}

void sort(int M[4][4])
{
    for(int b = 0, e = 11; b != e; ++b)
        for(int k = e, j = k--; j != b; j = k--)
            if (M[I(j)][J(j)] < M[I(k)][J(k)])
            {
                int t = M[I(j)][J(j)];
                M[I(j)][J(j)] = M[I(k)][J(k)];
                M[I(k)][J(k)] = t;
            }
}

int main()
{
    srand(time(0));
    int A[4][4];
    for(int i = 0; i < 4; ++i)
        for(int j = 0; j < 4; ++j)
            A[i][j] = rand()%20;

    for(int i = 0; i < 4; ++i)
    {
        for(int j = 0; j < 4; ++j) printf("%2d ",A[i][j]);
        puts("");
    }
    puts("");
    puts("");

    sort(A);

    for(int i = 0; i < 4; ++i)
    {
        for(int j = 0; j < 4; ++j) printf("%2d ",A[i][j]);
        puts("");
    }

}
