Cod sursa(job #2659688)
| Utilizator | Data | 17 octombrie 2020 12:07:59 | |
|---|---|---|---|
| Problema | Tablete | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 1.91 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("tablete.in");
ofstream fout ("tablete.out");
int N, K;
int a[1001][1001];
bool f[1000001];
int main()
{
fin >> N >> K;
int nr = 1;
if (K % 2 == 0)
{
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= K; j++)
{
a[i][j] = nr;
nr++;
}
}
for (int i = 1; i <= N; i++)
{
for (int j = K + 1; j <= N; j++)
{
a[i][j] = nr;
nr++;
}
}
}
else
{
int ok = 0;
if (N % 2)
{
ok = 1;
}
for (int i = 1; i <= N - ok; i++)
{
for (int j = 1; j < K; j++)
{
while(f[nr])nr++;
a[i][j] = nr;
f[nr]=1;
nr++;
}
int newnr=nr+1;
while(f[newnr]||newnr%2)newnr++;
a[i][K]=newnr;
f[newnr]=1;
}
while(f[nr])nr++;
if (ok)
{
for (int j = 1; j < K; j++)
{
while(f[nr])nr++;
a[N][j] = nr;
nr++;
}
int newnr=nr+1;
while(f[newnr]||newnr%2)newnr++;
a[N][K]=newnr;
f[newnr]=1;
}
for (int i = 1; i <= N; i++)
{
for (int j = K + 1; j <= N; j++)
{
if (!a[i][j])
{
while(f[nr])nr++;
a[i][j] = nr;
nr++;
}
}
}
}
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
fout << a[i][j] << " ";
}
fout << '\n';
}
}
