Cod sursa(job #2254343)

Utilizator CristyXtremeSimion Cristian CristyXtreme Data 5 octombrie 2018 01:03:29
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <cstdio>

using namespace std;

int main()
{
    FILE *f = fopen("tablete.in", "r"), *g = fopen("tablete.out", "w");
    int n, k, monostiva = 0, l = 1;
    fscanf(f, "%i %i", &n, &k);
    int m[n][n];
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            if(i == n - 2 && j == n - 1 && k > 2)
                m[i][j] = n * n;
            else
                if(monostiva && j == 0) {
                    m[i][j] = monostiva;
                    monostiva = 0;
                }
                else {
                    if(j == k - 1 && l % 2 == 1) {
                        monostiva = l;
                        l++;
                    }
                    m[i][j] = l;
                    l++;
                }
    if(m[n - 2][n - 1] == m[n - 1][n - 1])           // daca ultimele numere de pe ultimele 2 randuri sunt egale, inseamna ca
        m[n - 2][n - 1] = m[n - 1][k - 1] - 1;       // a ramas nefolosit unul din numerele de pe ultimul rand
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++)
            fprintf(g, "%i ", m[i][j]);
        fprintf(g, "\n");
    }
    return 0;
}