Cod sursa(job #406876)

Utilizator Tucu94Andrei Tuculanu Tucu94 Data 1 martie 2010 21:06:28
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include<stdio.h>
int i,j,m,n,k,v[1001][1001],nr,aux;
int main(){
FILE *f=fopen("tablete.in","r");
FILE *g=fopen("tablete.out","w");

	fscanf(f,"%d %d",&n,&k);
	
	if((k==n)||(k==1))
		fprintf(g,"0");
	else{
	 
	 nr=1;
		if((k%2==0)&&(n%2==0)){
			for(i=1;i<=n;i++){
				for(j=1;j<=n;j++,nr++)
					fprintf(g,"%d ",nr);
			fprintf(g,"\n");
			}
		}
	 
		else{
			nr=1;
			for(i=1;i<=n;i++)
				for(j=1;j<=n;j++,nr++)
					v[i][j]=nr;
         
		 
		 
		 
			if((k%2==1)&&(n%2==0))
				for(i=1;i<=n;i+=2)
					for(j=1;j<=n;j++)
						if(j==k){
							aux=v[i][1];
							for(m=2;m<=n;m++)
								v[i][m-1]=v[i][m];
							v[i][n]=v[i+1][n];
							for(m=n;m>=1;m--)
								v[i+1][m]=v[i+1][m-1];
							v[i+1][1]=aux;
						}	
			if((k%2==1)&&(n%2==1)){
				for(i=1;i<n;i+=2)
					for(j=1;j<=n;j++,nr++)
						if(j==k){
							aux=v[i][1];
							for(m=1;m<=n;m++)
								v[i][m]=v[i][m+1];
							v[i][n]=v[i+1][1];
							v[i+1][1]=aux;
						}
				aux=v[n-1][n];
				v[n-1][n]=v[n][n];
					for(i=n;i>1;i--)
						v[n][i]=v[n][i-1];
				v[n][1]=aux;
			}
		 
			if((k%2==0)&&(n%2==1))
				for(i=1;i<n;i+=2)
					for(j=1;j<=n;j++)
						if(j==k){
							aux=v[i][n];
							v[i][n]=v[i+1][n];
							for(m=n;m>=1;m--)
								v[i+1][m]=v[i+1][m-1];
							v[i+1][1]=aux;
						
						}	
         
		
	  
     	
		for(i=1;i<=n;i++){
				for(j=1;j<=n;j++,nr++)
					fprintf(g,"%d ",v[i][j]);
			fprintf(g,"\n");
		}
		
		}
	}

fclose(f);
fclose(g);
return 0;
}