Cod sursa(job #420325)

Utilizator nandoLicker Nandor nando Data 18 martie 2010 19:52:16
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <cstdio>

FILE* fin=fopen("tablete.in","r");

int n,k;

int main(){
	freopen("tablete.out","w",stdout);
	fscanf(fin,"%d %d",&n,&k);
	if(k%2==0){
			int c1=1,c2=n*(k-n%2)+1;
			for(int i=0;i<n;i++){
				for(int j=0;j<k-n%2;j++){
					printf("%d ",c1++);
				}
				for(int j=k-n%2;j<n;j++){
					printf("%d ",c2++);
				}
				putchar('\n');
			}
	}else{
		if(n%2==0){
			int c1=n*k+1;
			for(int i=0;i<n;i+=2){
				for(int j=0;j<k-1;j++){
					printf("%d ",i*k+j+1);
				}
				printf("%d ",k*(i+1)+1);
				for(int j=k;j<n;j++){
					printf("%d ",c1++);
				}
				printf("\n%d ",(i+1)*k);
				for(int j=k+2;j<=2*k;j++){
					printf("%d ",i*k+j);
				}
				for(int j=k;j<n;j++){
					printf("%d ",c1++);
				}
				putchar('\n');
			}
		}else{
			int c1=n*k+2;
			for(int i=0;i<n-2;i+=2){
				for(int j=0;j<k-1;j++){
					printf("%d ",i*k+j+1);
				}
				printf("%d ",k*(i+1)+1);
				if(i==0){
					printf("%d ",n*k);
				}
				for(int j=(i==0)?k+1:k;j<n;j++){
					printf("%d ",c1++);
				}
				printf("\n%d ",(i+1)*k);
				for(int j=k+2;j<=2*k;j++){
					printf("%d ",i*k+j);
				}
				for(int j=k;j<n;j++){
					printf("%d ",c1++);
				}
				putchar('\n');
			}
			for(int i=0;i<k-1;i++){
				printf("%d ",(n-1)*k+i+1);
			}
			printf("%d ",n*k+1);
			for(int j=k;j<n;j++){
				printf("%d ",c1++);
			}
			putchar('\n');
		}
	}
	fclose(fin);
	return 0;
}