Cod sursa(job #2029678)
Utilizator | Data | 30 septembrie 2017 12:40:01 | |
---|---|---|---|
Problema | Tablete | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.97 kb |
#include <iostream>
#include <fstream>
using namespace std;
int a[1010][1010];
int main()
{
ifstream fin ("tablete.in");
ofstream fout ("tablete.out");
int b[2010], n, k, i, j, x;
fin >> n >> k;
for (x=1; x<=2*n; x++)
b[x]=0;
for (i=1; i<=n; i++)
{
if (n%2==1 && i==n)
{
for (j=1; j<=n; j++)
{
if (j<k)
for (x=1; x<=n; x++)
if (!b[x])
{
if (i%2)
a[i][j]=x+n*(i-1),b[x]=1;
else
a[i][j]=x+n*(i-2),b[x]=1;
break;
}
if (j==k)
for (x=1; x<=n; x++)
if (!b[x] && x%2==0)
{
if (i%2)
a[i][j]=x+n*(i-1),b[x]=1;
else
a[i][j]=x+n*(i-2),b[x]=1;
break;
}
}
for (j=n; j>k; j--)
for (x=n; x>=1; x--)
if (!b[x])
{
if (i%2)
a[i][j]=x+n*(i-1),b[x]=1;
else
a[i][j]=x+n*(i-2),b[x]=1;
break;
}
}
else
{
for (j=1; j<=n; j++)
{
if (j<k)
for (x=1; x<=2*n; x++)
if (!b[x])
{
if (i%2)
a[i][j]=x+n*(i-1),b[x]=1;
else
a[i][j]=x+n*(i-2),b[x]=1;
break;
}
if (j==k)
for (x=1; x<=2*n; x++)
if (!b[x] && x%2==0)
{
if (i%2)
a[i][j]=x+n*(i-1),b[x]=1;
else
a[i][j]=x+n*(i-2),b[x]=1;
break;
}
}
for (j=n; j>k; j--)
for (x=2*n; x>=1; x--)
if (!b[x])
{
if (i%2)
a[i][j]=x+n*(i-1),b[x]=1;
else
a[i][j]=x+n*(i-2),b[x]=1;
break;
}
}
if (i%2==0)
for (x=1; x<=2*n; x++)
b[x]=0;
}
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
fout << a[i][j] << " ";
fout << "\n";
}
return 0;
}