Pagini recente » Cod sursa (job #2058086) | Cod sursa (job #2354091) | Cod sursa (job #2531806) | Cod sursa (job #2029876) | Cod sursa (job #236574)
Cod sursa(job #236574)
#include <stdio.h>
long v[1010][1010], n,k,p,i,c,j,t;
int main()
{ freopen("tablete.in","r",stdin);
freopen("tablete.out","w",stdout);
scanf("%ld %ld", &n,&k);
p=n/2;
if (n%2==1) p--;
t=2*n;
for (i=1; i<=p; i++)
{ c=t;
for (j=n; j>k; j--)
{ if (j%2==0)
{ v[2*i-1][j]=c;
v[2*i][j]=c-1;
} else
{ v[2*i][j]=c;
v[2*i-1][j]=c-1;
}
c-=2;
}
v[2*i-1][k]=c;
v[2*i][k]=c-2;
for (j=1; j<k; j++) v[2*i][j]=j+t-2*n;
c=k+t-2*n;
for (j=1; j<k; j++)
{ if (c==v[2*i][k]) c++;
v[2*i-1][j]=c;
c++;
}
t+=2*n;
}
if (n%2==1)
{ t+=n;
c=t;
for (i=n; i>k; i--)
{ if (i%2==0)
{ v[n-2][i]=c;
v[n-1][i]=c-1;
v[n][i]=c-2;
}else
{ v[n][i]=c;
v[n-1][i]=c-1;
v[n-2][i]=c-2;
}
c-=3;
}
if (k%2==0)
{ v[n-2][k]=c-4;
v[n-1][k]=c-2;
v[n][k]=c;
for (i=1; i<k; i++) v[n-2][i]=i+t-3*n;
c=k+t-3*n;
for (i=1; i<k; i++)
{ if ((c==v[n-2][k])|(c==v[n][k])) c++;
if ((c==v[n-2][k])|(c==v[n][k])) c++;
v[n-1][i]=c;
c++;
}
for (i=1; i<k; i++)
{ if ((c==v[n-2][k])|(c==v[n-1][k])) c++;
if ((c==v[n-2][k])|(c==v[n-1][k])) c++;
v[n][i]=c;
c++;
}
} else
{ v[n][k+1]--;
v[n-2][k]=c+1;
v[n-1][k]=c-3;
v[n][k]=c-5;
for (i=1; i<k; i++) v[n][i]=i+t-3*n;
c=k+t-3*n;
for (i=1; i<k; i++)
{ if ((c==v[n-2][k])|(c==v[n][k])) c++;
if ((c==v[n-2][k])|(c==v[n][k])) c++;
v[n-1][i]=c;
c++;
}
for (i=1; i<k; i++)
{ if ((c==v[n][k])|(c==v[n-1][k]))c++;
if ((c==v[n][k])|(c==v[n-1][k])) c++;
v[n-2][i]=c;
c++;
}
}
}
for (i=1; i<=n; i++)
{ for (j=1; j<=n; j++) printf("%ld ", v[i][j]);
printf("\n");
}
return 0;
}