Cod sursa(job #783262)

Utilizator Cosmin1490Balan Radu Cosmin Cosmin1490 Data 2 septembrie 2012 14:05:16
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.93 kb
#include <iostream>
#include <fstream>

using namespace std;

const char infile[] = "tablete.in";
const char outfile[] = "tablete.out";




int main(int argc, char* argv[])
{
    int N, K;
    fstream fin(infile, ios::in);
    fin >> N >> K;
    fin.close();

    fstream fout(outfile, ios::out);
    
    if(N & 1 == 0 && K & 1 == 0)
    {
        for(int i = 1 ; i <= N * N; i++)
        {
            fout << i << " ";
            if(i % N == 0)
            {
                fout << "\n";
            }
        }
    }
    else
    {
        bool swap = false;
        bool swap2 = false;
        int current = 1;
        for(int i = 1 ; i <= N * N; i++)
        {
            int moduloN = i % N;
            if((moduloN == 1) && (swap == true))
            {
                fout << (i - 1)  - N + K << " ";
                swap = false;
                continue;
            }
            
            if( swap2 == true )
            {
                if ( moduloN == 0)
                {
                    fout << N * N << " \n";
                    continue;
                }
                else if(moduloN <= K)
                {
                    fout << i - 1 << " ";
                    continue;
                }
                else
                {
                    fout << i << " ";
                    continue;
                }
            }
            

            if(i == (N-1) * N && (i + K) & 1)
            {
                fout << i + K << " \n";
                swap2 = true;
                continue;
            }
            else if( i % N == K &&  i & 1)
            {
                current ++;
                swap = true;
            }
            
            fout << current++ << " ";
            
            if(moduloN == 0)
            {
                fout << "\n";
            }
        }

    }
    
    
    fout.close();
}