Cod sursa(job #2049327)

Utilizator mirceaisherebina mircea mirceaishere Data 27 octombrie 2017 08:03:00
Problema Tablete Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.86 kb
#include <fstream>
using namespace std;
ifstream fin("tablete.in");
ofstream fout("tablete.out");

int n, k, i, j, s, v[1002][1002];


int main () {
    fin>>n>>k;
    if(n%2==0 && k%2==0){
        for(i=1; i<=n; i++){
            for(j=1; j<=n; j++){
                fout<<(i-1)*n+j<<" ";
            }
            fout<<"\n";
        }
    }
    if(n%2==1 && k%2==0){
        s=n;
        for(i=1; i<=n; i++){
            for(j=1; j<=n; j++){
                if(j==1){
                    fout<<i<<" ";
                }else{
                    s++;
                    fout<<s<<" ";
                }
            }
            fout<<"\n";
        }
    }

    if(n%2==0 && k%2==1){
        for(i=1; i<=n; i++){
            for(j=1; j<=n; j++){
                v[i][j]=(i-1)*n+j;
            }
        }
        for(i=1; i<=n; i=i+2){
            for(j=2; j<=n; j++){
                swap(v[i][j], v[i+1][j-1]);
            }
        }
        for(i=1; i<=n; i++){
            for(j=1; j<=n; j++){
                fout<<v[i][j]<<" ";
            }
            fout<<"\n";
        }
    }
    if(n%2==1 && k%2==1){
        for(i=1; i<=n; i++){
            for(j=1; j<=n; j++){
                v[i][j]=(j-1)*n+i;
            }
        }
        j=k;
        for(i=1; i<=n; i++){
            if(v[i][j]%2==1){
                if(i==1)
                    swap(v[i][j], v[i+2][j-1]);
                else
                    swap(v[i][j], v[i-2][j+1]);
            }
        }
        for(i=1; i<n; i++){
            for(j=i+1; j<=n; j++){
                if(v[i][k]>v[j][k]){
                    swap(v[i][k],v[j][k]);
                }
            }
        }
        for(i=1; i<=n; i++){
            for(j=1; j<=n; j++){
                fout<<v[i][j]<<" ";
            }
            fout<<"\n";
        }
    }


}