Pagini recente » Cod sursa (job #1617769) | Cod sursa (job #127829) | Cod sursa (job #382183) | Cod sursa (job #405466) | Cod sursa (job #1238548)
#include<fstream>
using namespace std;
ifstream fin("tablete.in");
ofstream fout("tablete.out");
int n,m,i,j,k,ok,minim,maxim,x,y,z;
int a[1001][1001],lmij0,lmij1,lmij2;
int main(){
fin>>n>>k;
if(n==3){
fout<<"1 2 6"<<"\n"<<"3 4 5"<<"\n"<<"7 8 9";
return 0;
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
a[i][j]=++x;
}
}
if(n%2==0){
//cand n=par
for(i=1;i<n;i+=2){
x=a[i][k];
a[i][k]=a[i+1][k];
a[i+1][k]=x;
x=a[i][k];
//linia i interschimba
for(j=k+1;j<=n;j++){
a[i][j-1]=a[i][j];
}
a[i][n]=x;
x=a[i+1][k];
//linia i+1 interschimba
for(j=k-1;j>=1;j--){
a[i+1][j+1]=a[i+1][j];
}
a[i+1][1]=x;
}
}
else{
//cand e impar pe l1
if(a[1][k]%2==1){
//cand sunt in numar par
if((n+1)/2%2==0){
for(i=1;i<n;i+=4){
x=a[i][k];
a[i][k]=a[i+2][k];
a[i+2][k]=x;
x=a[i][k];
//linia i interschimba
for(j=k+1;j<=n;j++){
a[i][j-1]=a[i][j];
}
a[i][n]=x;
x=a[i+2][k];
//linia i+1 interschimba
for(j=k-1;j>=1;j--){
a[i+2][j+1]=a[i+2][j];
}
a[i+2][1]=x;
}
}
else{
for(i=1;i<n/2-1;i+=2){
x=a[i][k];
a[i][k]=a[n-i+1][k];
a[n-i+1][k]=x;
x=a[i][k];
//linia i interschimba
for(j=k+1;j<=n;j++){
a[i][j-1]=a[i][j];
}
a[i][n]=x;
x=a[n-i+1][k];
//linia i+1 interschimba
for(j=k-1;j>=1;j--){
a[n-i+1][j+1]=a[n-i+1][j];
}
a[n-i+1][1]=x;
}
//trebuie schimbate de pe lmij lmij-2 lmij+2
lmij0=a[n/2-1][k];
lmij1=a[n/2+1][k];
lmij2=a[n/2+3][k];
a[n/2-1][k]=lmij2;
a[n/2+1][k]=lmij0;
a[n/2+3][k]=lmij1;
//a[n/2-1]>valorile restul mai mici
x=a[n/2-1][k];
for(j=k+1;j<=n;j++){
a[n/2-1][j-1]=a[n/2-1][j];
}
a[n/2-1][n]=x;
//linia mij
x=a[n/2+1][k];
for(j=k-1;j>=1;j--){
a[n/2+1][j+1]=a[n/2+1][j];
}
a[n/2+1][1]=x;
//linia mij2
x=a[n/2+3][k];
for(j=k-1;j>=1;j--){
a[n/2+3][j+1]=a[n/2+3][j];
}
a[n/2+3][1]=x;
}
}
else{
//cand sunt in numar par
if(n/2%2==0){
for(i=2;i<n;i+=4){
x=a[i][k];
a[i][k]=a[i+2][k];
a[i+2][k]=x;
x=a[i][k];
//linia i interschimba
for(j=k+1;j<=n;j++){
a[i][j-1]=a[i][j];
}
a[i][n]=x;
x=a[i+2][k];
//linia i+2 interschimba
for(j=k-1;j>=1;j--){
a[i+2][j+1]=a[i+2][j];
}
a[i+2][1]=x;
}
}
else{
for(i=2;i<n/2-1;i+=2){
x=a[i][k];
a[i][k]=a[n-i+1][k];
a[n-i+1][k]=x;
x=a[i][k];
//linia i interschimba
for(j=k+1;j<=n;j++){
a[i][j-1]=a[i][j];
}
a[i][n]=x;
x=a[n-i+1][k];
//linia i+1 interschimba
for(j=k-1;j>=1;j--){
a[n-i+1][j+1]=a[n-i+1][j];
}
a[n-i+1][1]=x;
}
//trebuie schimbate de pe lmij lmij-2 lmij+2
lmij0=a[n/2-1][k];
lmij1=a[n/2+1][k];
lmij2=a[n/2+3][k];
a[n/2-1][k]=lmij2;
a[n/2+1][k]=lmij0;
a[n/2+3][k]=lmij1;
//a[n/2-1]>valorile restul mai mici
x=a[n/2-1][k];
for(j=k+1;j<=n;j++){
a[n/2-1][j-1]=a[n/2-1][j];
}
a[n/2-1][n]=x;
//linia mij
x=a[n/2+1][k];
for(j=k-1;j>=1;j--){
a[n/2+1][j+1]=a[n/2+1][j];
}
a[n/2+1][1]=x;
//linia mij2
x=a[n/2+3][k];
for(j=k-1;j>=1;j--){
a[n/2+3][j+1]=a[n/2+3][j];
}
a[n/2+3][1]=x;
}
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
fout<<a[i][j]<<" ";
fout<<"\n";
}
return 0;
}