Pagini recente » Cod sursa (job #3173425) | Cod sursa (job #2471482) | Cod sursa (job #1161030) | Cod sursa (job #785681) | Cod sursa (job #231161)
Cod sursa(job #231161)
#include <iostream>
int main()
{
FILE* f = fopen("tablete.in", "r");
int n, k;
fscanf(f, "%d %d", &n, &k);
fclose(f);
int* viz = new int[n*n+1];
memset(viz, 0, sizeof(int)*(n*n+1));
int** tab = new int*[n];
for (int i = 0; i < n; i++)
tab[i] = new int[n];
int trebin = k-1;
int primloop = 1;
int incepcop = 0;
int lin = 0;
int col = 0;
int kcol = 0;
int comp;
int suntin;
int trebini;
for (int nr = 1; nr < n*n; nr++)
{
if (nr % 2 == 0)
{
if (primloop == 1)
comp = nr-1;
else
comp = suntin;
if (comp >= trebin)
{
if (primloop)
primloop = 0;
tab[lin][k-1] = nr;
viz[nr] = 1;
suntin = 0;
trebini = trebin;
for (int i = nr-1; i > 0; i--)
{
if (!viz[i])
{
if (trebini)
{
tab[lin][k-col-2] = i;
viz[i] = 1;
col++;
trebini--;
}
else
suntin++;
}
}
lin++;
col = 0;
if (lin >= n)
break;
}
}else if(!primloop)
suntin++;
}
lin = 0;
col = 0;
for (int i = 1; i <= n*n; i++)
{
if (!viz[i])
{
tab[lin][col+k] = i;
col++;
if (col+k >= n)
{
lin++;
col = 0;
}
}
}
f = fopen("tablete.out", "w+");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
fprintf(f, "%d ", tab[i][j]);
fprintf(f, "\n");
}
fclose(f);
return 0;
}