Cod sursa(job #1972378)

Utilizator MihaelaCismaruMihaela Cismaru MihaelaCismaru Data 22 aprilie 2017 22:44:22
Problema Tablete Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.4 kb
#include<fstream>
using namespace std;
ifstream in ("tablete.in" );
ofstream out("tablete.out");
int mat[1010][1010],n,k,i,j,p,s,d,g,poz,lin,alfa,ok;
int main(){
    in >> n >> k;
    if( n % 2 == 0 && k % 2 == 0 ){
            s =0;
        for( i = 1; i <= n; i ++ ){
            for( j = 1; j <= n; j ++ ){
                s++;
                mat[i][j] = s;
            }
        }
        for( i = 1; i <= n; i ++ ){
            for( j = 1; j <= n; j ++ ){
                out<<mat[i][j]<<" ";
            }
            out<<"\n";
        }
    }
    if( k % 2 == 1 ){
            d=0;
            s = 0;
            poz=0;
            lin =1;
        for( i = 1; i <= n*n; i ++ ){
            if( i % 2 == 0 && p >= k - 1 ){
                s++;
                mat[s][k] = i;
                p=p-k+1;

            }
            else{
                p++;
                d++;
                poz++;
                if(poz == k){
                    poz = 1;
                    lin++;

                }
                if( lin <= n){
                    mat[lin][poz] = i;
                }
                else{
                    alfa = i;
                }
            }
            ok =0;
            for( j = 1; j <= k; j ++ ){
                if(mat[n][j] == 0 ){
                    ok =1;
                }
            }
            if( ok == 0 ){
                break;
            }
        }

        if(alfa>0){
            mat[1][k+1] = alfa;
        }
        g=mat[n][k];

       for( i = 1; i <= n; i ++ ){
            for( j = k + 1; j <= n; j ++ ){
                if( mat[i][j] == 0){
                g++;
                mat[i][j] = g;
                }
            }
       }

        for( i = 1; i <= n; i ++ ){
            for( j = 1; j <= n; j ++ ){
                out<<mat[i][j]<<" ";
            }
            out<<"\n";
        }
    }
    if( n % 2 == 1 && k % 2 == 0 ){
        for( i = 1; i <= n; i ++ ){
            for( j = 1; j <= n-1; j ++ ){
                s++;
                mat[i][j] = s;
            }
        }
        g=(n-1)*n;
        for( i = 1; i <= n; i ++ ){
                g++;
            mat[i][n] = g;
        }
        for( i = 1; i <= n; i ++ ){
            for( j = 1; j <= n; j ++ ){
                out<<mat[i][j]<<" ";
            }
            out<<"\n";
        }
    }
    return 0;
}