Cod sursa(job #783240)

Utilizator Cosmin1490Balan Radu Cosmin Cosmin1490 Data 2 septembrie 2012 13:52:54
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.95 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 % 2 == 0 && K % 2 == 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++)
        {
            
            if((i % N == 1) && (swap == true))
            {
                fout << (i - 1)  - N + K << " ";
                swap = false;
                continue;
            }
            
            if( swap2 == true )
            {
                if ( i % N == 0)
                {
                    fout << N * N << " \n";
                    continue;
                }
                else if(i % N <= K)
                {
                    fout << i - 1 << " ";
                    continue;
                }
                else
                {
                    fout << i << " ";
                    continue;
                }
            }
            

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

    }
    
    
    fout.close();
}