Cod sursa(job #317869)

Utilizator n3msizN3msiz n3msiz Data 25 mai 2009 19:24:17
Problema Tablete Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.48 kb
#include<stdio.h>

int a[1005][1005],i,j,n,k,aux,nr;

int main(){
	FILE*f=fopen("tablete.in","r");
	FILE*g=fopen("tablete.out","w");
	
	fscanf(f,"%d %d",&n,&k);
	aux=1;
	nr=1;
	if(k%2==n%2 && k%2==1){
		for(i=1;i<=n;i++){
			for(j=1;j<=k;j++){
				if(j==1)
					a[i][j]=aux;
				else{
					if(j<k){
						a[i][j]=++nr;
						//aux=nr;
					}
					if(j==k){
						if(j%2==k%2 && k%2==0){
							a[i][j]=++nr;
							//aux=nr;
						}
						if(j%2==k%2 && k%2==1 && (nr+1)%2==1){
							nr++;
							aux=nr;
							a[i][j]=++nr;
							//plus++;
						}
						if(j%2==k%2 && k%2==1 && (nr+1)%2==0){
							a[i][j]=++nr;
							aux=nr+1;
							nr++;
						}
					}
				}
			}
			
			
		}
		nr-=2;
		a[1][k+1]=++nr;
		nr+=2;
		a[1][k+2]=nr;
		for(i=k+3;i<=n;i++)
			a[1][i]=++nr;
		for(i=2;i<=n;i++)
			for(j=k+1;j<=n;j++)
				a[i][j]=++nr;
			
	}
	
	if(k%2==0 && k!=n-1 && k!=n-1)
		for(i=1;i<=n;i++){
			for(j=1;j<=n;j++)
				a[i][j]=nr++;
		}
	
	if(k%2==1 && n%2==0 && k!=n-1){
		for(i=1;i<=n;i++){
			for(j=1;j<=k;j++){
				if(j==1)
					a[i][j]=aux;
				else{
					if(j<k){
						a[i][j]=++nr;
						//aux=nr;
					}
					if(j==k){
						if(j%2==k%2 && k%2==0){
							a[i][j]=++nr;
							//aux=nr;
						}
						if(j%2==k%2 && k%2==1 && (nr+1)%2==1){
							nr++;
							aux=nr;
							a[i][j]=++nr;
							//plus++;
						}
						if(j%2==k%2 && k%2==1 && (nr+1)%2==0){
							a[i][j]=++nr;
							aux=nr+1;
							nr++;
						}
					}
				}
			}
		}
		nr--;
		a[1][k+1]=++nr;
		nr++;
		a[1][k+2]=nr;
		for(i=k+3;i<=n;i++)
			a[1][i]=++nr;
		for(i=2;i<=n;i++)
			for(j=k+1;j<=n;j++)
				a[i][j]=++nr;
	}
	
	if(k==n-1){
		if(k%2==0)
			for(i=1;i<=n;i++)
				for(j=1;j<=n-1;j++)
					a[i][j]=nr++;
		else{
			for(i=1;i<=n;i++)
				for(j=1;j<=n-1;j++){
					if(j==1)
					a[i][j]=aux;
					else{
						if(j<k){
							a[i][j]=++nr;
							//aux=nr;
						}
						if(j==k){
							if(j%2==k%2 && k%2==0){
								a[i][j]=++nr;
								//aux=nr;
							}
							if(j%2==k%2 && k%2==1 && (nr+1)%2==1){
								nr++;
								aux=nr;
								a[i][j]=++nr;
								//plus++;
							}
							if(j%2==k%2 && k%2==1 && (nr+1)%2==0){
								a[i][j]=++nr;
								aux=nr+1;
								nr++;
							}
						}
					}
				}
			for(i=1;i<=n;i++){
				a[i][n]=nr++;
			}
		}
	}
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++)
			fprintf(g,"%d ",a[i][j]);
		fprintf(g,"\n");
	}
	fclose(f);
	fclose(g);
	return 0;
}