Cod sursa(job #231373)

Utilizator DraStiKDragos Oprica DraStiK Data 14 decembrie 2008 12:14:48
Problema Tablete Scor 20
Compilator cpp Status done
Runda Algoritmiada 2009, Runda 1, Clasele 9-10 Marime 1 kb
#include <stdio.h>
int n,k;
int a[105][105];
void print ()
{
    int i,j;
    for (i=1; i<=n; ++i)
    {
        for (j=1; j<=n; ++j)
            printf ("%d ",a[i][j]);
        printf ("\n");
    }
}
void schimba ()
{
    int i,j,aux;
    for (i=1; i<n; ++i)
    {
        aux=a[i][k];
		for (j=k; j<n; ++j)
            a[i][j]=a[i][j+1];
        a[i][n]=a[i+1][1];
        a[i+1][1]=aux;
    }
    aux=a[n][n];
    a[n][n]=a[n-1][n];
    a[n-1][n]=aux;
    aux=a[n][n];
    i=n-1;
    j=0;
    while (aux<a[n][i])
    {
        --i;
        ++j;
    }
	for (i=n; i>n-j; --i)
        a[n][i]=a[n][i-1];
	a[n][n-j]=aux;
}
int main ()
{
    freopen ("tablete.in","r",stdin);
    freopen ("tablete.out","w",stdout);    
    int i,j,l=1;
    scanf ("%d%d",&n,&k);
    for (i=1; i<=n; ++i)
        for (j=1; j<=n; ++j)
            a[i][j]=l++;
    if (n%2==0 && k%2==0)
        print ();
    else if (n%2==0)
    {
        schimba ();
        print ();
    }
    return 0;
}