Cod sursa(job #231844)
Utilizator | Data | 14 decembrie 2008 14:51:05 | |
---|---|---|---|
Problema | Tablete | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 4.07 kb |
#include <stdio.h>
using namespace std;
long v[1020][1020], n, i, j, k, l, p[1020];
int main()
{
freopen("tablete.in", "r", stdin);
freopen("tablete.out", "w", stdout);
scanf("%d %d", &n, &k);
if(n%2==0)
{
l=0;
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
l++;
v[i][j]=l;
}
}
if(k%2==1)
{
for(i=1; i<=n; i++)
{
if(i%2==1)
{
for(j=0; j<n; j++)
{
v[i][j]=v[i][j+1];
}
}
else
{
for(j=n+1; j>1; j--)
{
v[i][j]=v[i][j-1];
}
}
}
for(i=1; i<=n; i++)
{
if(i%2==1)
{
v[i][n]=v[i+1][n+1];
}
else
{
v[i][1]=v[i-1][0];
}
}
}
}
else
{
if(k%2==0)
{
l=0;
for(i=1; i<=n; i++)
{
for(j=p[i]+1; j<=n; j++)
{
l++;
if(j==k && l%2==1)
{
p[i+1]++;
v[i+1][1]=l;
l++;
}
v[i][j]=l;
}
}
}
else
if(k%2==1)
{
l=0;
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
l++;
v[i][j]=l;
}
}
if(n%4==3)
{
for(i=1; i<=n; i++)
{
if(i%4==1)
{
for(j=0; j<n; j++)
{
v[i][j]=v[i][j+1];
}
}
else
if(i%4==3)
{
for(j=n+1; j>1; j--)
{
v[i][j]=v[i][j-1];
}
}
}
for(i=1; i<=n; i++)
{
if(i%4==1)
{
v[i][n]=v[i+2][n+1];
}
if(i%4==3)
{
v[i][1]=v[i-2][0];
}
}
}
else
if(n%4==1)
{
for(i=1; i<n; i++)
{
if(i%4==1)
{
for(j=0; j<n; j++)
{
v[i][j]=v[i][j+1];
}
}
else
if(i%4==3)
{
for(j=n+1; j>1; j--)
{
v[i][j]=v[i][j-1];
}
}
}
for(i=1; i<n; i++)
{
if(i%4==1)
{
v[i][n]=v[i+2][n+1];
}
if(i%4==3)
{
v[i][1]=v[i-2][0];
}
}
for(j=n+1; j>1; j--)
{
v[n][j]=v[n][j-1];
}
v[n][1]=v[n-2][n];
v[n-2][n]=v[n][n+1];
}
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
printf("%d ", v[i][j]);
printf("\n");
}
return 0;
}