Pagini recente » Cod sursa (job #1052578) | Cod sursa (job #2539314) | Cod sursa (job #2634767) | Cod sursa (job #1177442) | Cod sursa (job #2254343)
#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;
}