Cod sursa(job #831001)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 7 decembrie 2012 23:07:01
Problema Tablete Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <stdio.h>
FILE *f=fopen("tablete.in","r");
FILE *g=fopen("tablete.out","w");
int A[1001][1001],N,K;

int main(void){
	register int i,j,t,q;
	
	fscanf(f,"%d %d",&N,&K);
	
	if(K%2==0 && N%2==0){
		t=1;	
		for(i=1;i<=N;i++){
			for(j=1;j<=K;j++){
				A[i][j]=t++;
			}
		}
		for(i=1;i<=N;i++){
			for(j=K+1;j<=N;j++){
				A[i][j]=t++;
			}
		}
	}
	if(K%2==1){
			if(N%2==0){
				for(q=1;q<=N;q+=2){
					t=A[q-1][K]+1;
					for(j=1;j<K;j++){
						A[q][j]=t++;
					}
					A[q][K]=A[q-1][K]+K+1;
					A[q+1][1]=A[q-1][K]+K;
					t=A[q-1][K]+K+2;
					for(j=2;j<=K;j++)
						A[q+1][j]=t++;
				}
				t=A[N][K]+1;
				for(i=1;i<=N;i++)
					for(j=K+1;j<=N;j++)
						A[i][j]=t++;
			}
			else{
				for(q=1;q<=N-2;q+=2){
					t=A[q-1][K]+1;
					for(j=1;j<K;j++){
						A[q][j]=t++;
					}
					A[q][K]=A[q-1][K]+K+1;
					A[q+1][1]=A[q-1][K]+K;
					t=A[q-1][K]+K+2;
					for(j=2;j<=K;j++)
						A[q+1][j]=t++;
				}
				for(j=1;j<=K;j++){
					A[N][j]=(N-1)*K+j;
				}
				t=A[N][K]+1;
				for(i=1;i<=N;i++){
					for(j=K+1;j<=N;j++){
						A[i][j]=t++;
					}
				}
				A[N][K]=N*K+1;
				A[1][K+1]=N*K;
			}
			
	}
	
	for(i=1;i<=N;i++){
		for(j=1;j<=N;j++)
			fprintf(g,"%d ",A[i][j]);
		fprintf(g,"\n");
	}
	return 0;
}