Cod sursa(job #350393)

Utilizator n3msizN3msiz n3msiz Data 23 septembrie 2009 19:08:24
Problema Tablete Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.81 kb
#include<stdio.h>

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

int main(){
	FILE*f=fopen("tablete.in","r");
	FILE*g=fopen("tablete.out","w");
	
	fscanf(f,"%d %d",&n,&k);
	
	if(k%2==0){
		for(i=1;i<=n;i++){
			for(j=1;j<=n;j++){
				a[i][j]=++nr;
				fprintf(g,"%d ",a[i][j]);}
		fprintf(g,"\n");}
	}
	else{
		if(n%2==0 && k%2==1){
			for(i=1;i<=n-1;i++){
				if(i>=2){
					if(i!=n-1){		
						a[i][1]=p;
						
						for(j=2;j<k;j++)
							a[i][j]=++nr;
						nr++;
						p=nr;
						nr++;
						a[i][k]=nr;
						for(j=k+1;j<=n;j++)
							a[i][j]=++nr;
					}
					else{
						a[i][1]=p;
						
						for(j=2;j<k;j++)
							a[i][j]=++nr;
						nr++;
						p=nr;
						nr++;
						a[i][k]=nr;
						for(j=k+1;j<n;j++)
							a[i][j]=++nr;
						a[i][n]=n*n;
					}
						
				}
				else{
					for(j=1;j<k;j++)
						a[i][j]=++nr;
					nr++;
					p=nr;
					nr++;
					a[i][k]=nr;
					for(j=k+1;j<=n;j++)
						a[i][j]=++nr;
				}
			}
			a[n][1]=p;
			for(j=2;j<=n;j++)
				a[n][j]=++nr;
			
			for(i=1;i<=n;i++){
				for(j=1;j<=n;j++)
					fprintf(g,"%d ",a[i][j]);
				fprintf(g,"\n");}
		}
		else{
			if(n%2==1 && k%2==1){
				for(i=1;i<=n-1;i++){
					if(i%2==1){
						for(j=1;j<k;j++)
							a[i][j]=++nr;
						nr++;
						p=nr;
						nr++;
						a[i][k]=nr;
						for(j=k+1;j<=n;j++)
							a[i][j]=++nr;
					}
					else{	
						if(i!=n-1){
							a[i][1]=p;
							
							for(j=2;j<=n;j++)
								a[i][j]=++nr;
						}
						else{
							a[i][1]=p;
							
							for(j=2;j<n;j++)
								a[i][j]=++nr;
							a[i][n]=n*n;
						}
					}
				}
				for(i=1;i<=n;i++)
					a[n][i]=++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;
}