Cod sursa(job #2258174)

Utilizator marian013Giugioiu Marian Constantin marian013 Data 10 octombrie 2018 22:35:28
Problema Tablete Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <cstdio>
using namespace std;
int main()
{
    freopen("tablete.in","r",stdin);
    freopen("tablete.out","w",stdout);
    int  n,k,v[1000002],m,i,aux;
    scanf("%d%d",&n,&k);
    m=n*n;
    for(i=1;i<=m;i++)
        v[i]=i;
    if(n%2==0&&k%2)
    {

            i=m-n+k;
            while(i>n){

            aux=v[i];
            while(i%n)
            {
                v[i]=v[i-1];
                --i;
            }
            v[i]=aux;
            i-=n-k;
            }
            aux=v[k];
            i=k;
            while(i<=n-2)
                {
                    v[i]=v[i+1];
                    ++i;
                }
                v[i]=v[n+1];
                v[n+1]=aux;
    }
    else
    {
        if(k%2==0)
        {
            i=m-2*n+k;
            while(i>n){
            aux=v[i];
            while(i%n)
            {
                v[i]=v[i-1];
                --i;
            }
            v[i]=aux;
            i-=2*n-k;
            }

        }
        else
        {
            i=m-n+k;
            while(i>n){
            aux=v[i];
            while(i%n)
            {
                v[i]=v[i-1];
                --i;
            }
            v[i]=aux;
            i-=2*n-k;
            }
            aux=v[k];
            i=k;
            while(i<=n-1)
                {
                    v[i]=v[i+1];
                    ++i;
                }
                v[i]=v[n+1];
                v[n+1]=aux;
        }
    }
    for(i=1;i<=m;i++)
    {
        printf("%d ",v[i]);
        if(i%n==0) printf("\n");
    }
}