Cod sursa(job #828442)

Utilizator Toast97Calin Farcas Toast97 Data 3 decembrie 2012 19:36:22
Problema Tablete Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <fstream>

using namespace std;

int main()
{
    ifstream f("tablete.in");
    ofstream g("tablete.out");

int N,K;
f>>N>>K;
int a[N],b[N];


int p=0,j,i,m=1,l,c,k;

if(N%2==1 && K%2==0)  {
    K=N-1;
    for(i=1;i<N;i++) {
    a[K]=K+p;
    for(j=K+1;j<=N;j++) a[j]=a[j-1]+1;
    for(j=K-1;j>=1;j--) a[j]=a[j+1]-1;
    p+=N+1;
    for(j=1;j<=N;j++) g<<a[j]<<" ";
    g<<'\n';
    }
    for(j=1;j<K;j++) g<<j*(N+1)<<" "; g<<N*N-(N*N)%2<<" "; for(j=K;j<N;j++) {g<<N*N-(N*N)%2+m<<" ";m++;}
}
else if(N%2==0 && K%2==0)
for(i=1;i<=N;i++) {
for(j=1;j<=N;j++) {
g<<m<<" ";
m++;
}
g<<'\n';
}

else if(N%2==0 && K%2==1)  {
for(i=1;i<=N;i+=2) {
for(j=1;j<=N;j++) {a[j]=m; m++;}
for(l=1;l<=N;l++) {b[l]=m;m++;}

b[1]=a[1];a[N]=b[N];a[1]++;b[N]--;
for(j=2;j<N;j++) a[j]++;
for(l=2;l<N;l++) b[l]--;
for(j=1;j<=N;j++) g<<a[j]<<" "; g<<'\n';
for(l=1;l<=N;l++) g<<b[l]<<" "; g<<'\n';
}
}

else if(N%2==1 && K%2==1) {
for(j=1;j<=N;j++) {a[j]=m;m++;}
c=a[K];
for(j=K;j<=N;j++) a[j]++;
for(j=1;j<=N;j++) g<<a[j]<<" ";
g<<'\n';
for(i=2;i<=N;i+=2) {
    for(j=1;j<=N;j++) {a[j]=m;m++;}
    for(l=1;l<=N;l++) {b[l]=m;m++;}
    a[1]=c; c=b[K]; a[N]=c;
    for(l=K;l>=1;l--) b[l]--;
    for(j=1;j<=N;j++) g<<a[j]<<" "; g<<'\n';
    for(l=1;l<=N;l++) g<<b[l]<<" "; g<<'\n';
    }

}
f.close();
g.close();
return 0;

}