Cod sursa(job #1209727)

Utilizator pavlov.ionPavlov Ion pavlov.ion Data 18 iulie 2014 13:59:51
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include<fstream>
using namespace std;
ifstream cin("tablete.in");
ofstream cout("tablete.out");
#define MAXN 1005
int N,K,A[MAXN][MAXN];
int main() {
	int i,j,w;
	long long nr=0;
	cin>>N>>K;
	if(!(K%2)) {
		for(i=1;i<=N;i++)
		    for(j=1;j<=K;j++)
			     	A[i][j]=++nr;
		for(i=1;i<=N;i++)
		    for(j=K+1;j<=N;j++)
		            A[i][j]=++nr;
		}		
	if(K%2 && !(N%2)) {					    
	   for(i=1;i<=N;i++)
         if(i%2) {
		 		 for(j=1;j<=K-1;j++)
		 		       A[i][j]=(i-1)*K+j;
		 		 A[i][K]=(i-1)*K+K+1;
				 }
		else {
			 A[i][1]=(i-1)*K;
			 for(j=2;j<=K;j++)
			    A[i][j]=(i-1)*K+j;
				}
		     nr=A[N][K];		
		for(i=1;i<=N;i++)
		      for(j=K+1;j<=N;j++)
			       A[i][j]=++nr;
 }	
   if(K%2 && N%2) {					    
	   for(i=1;i<=N;i++)
         if(i%2) {
		 		 for(j=1;j<=K-1;j++)
		 		       A[i][j]=(i-1)*K+j;
		 		 A[i][K]=(i-1)*K+K+1;
				 }
		else {
			 A[i][1]=(i-1)*K;
			 for(j=2;j<=K;j++)
			    A[i][j]=(i-1)*K+j;
				}
		if(K<N)		
		     nr=N*K;
		A[1][K+1]=nr;
		nr++;	
		 	for(j=K+2;j<=N;j++)
			  A[1][j]=++nr;	
		for(i=2;i<=N;i++)
		      for(j=K+1;j<=N;j++)
			       A[i][j]=++nr;
 }	
     for(i=1;i<=N;i++){	         					        
	    for(j=1;j<=N;j++)
	          cout<<A[i][j]<<" ";
	          cout<<"\n";
			  }	  
return 0;
}