Cod sursa(job #2775670)

Utilizator daria_pDaria Popescu daria_p Data 16 septembrie 2021 18:17:31
Problema Tablete Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.66 kb
#include <fstream>

using namespace std;
ifstream fin("tablete.in");
ofstream fout("tablete.out");
int  n,k,v[1000002],m,i,aux;
int main()
{
    fin >>n>>k;
    m=n*n;
    for(i=1;i<=m;i++)
    {
        v[i]=i;
    }
    if(n%2==0&&k%2!=0)
    {
        i=m-n+k;
        while(i>n)
        {
            aux=v[i];
            while(i%n!=0)
            {
                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=i-2*n-k;
            }
        }
        else
        {
            i=m-n;
            while(i>n)
            {
                aux=v[i];
                while(i%n)
                {
                    v[i]=v[i-1];
                    i--;
                }
                v[i]=aux;
                i=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++)
    {
        fout <<v[i]<<' ';
        if(i%n==0) fout <<'\n';
    }
    return 0;
}