Cod sursa(job #231752)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 14 decembrie 2008 12:53:59
Problema Tablete Scor 40
Compilator cpp Status done
Runda Algoritmiada 2009, Runda 1, Clasele 5-8 Marime 1.18 kb
#include<stdio.h>
long t,x,y,i;long a[101][101];
int n,poz,rand1,rand2,fin,k,poz2,poz3,j;
void sing_linie()
{


for(int i=1;i<=n;i++)
   a[rand1][i]=i+t;
if(a[rand1][k]%2==1)
  {
   int c=a[rand1-1][n];
   a[rand1-1][n]=a[rand1][k];
   for(i=k-1;i>=1;i--)
	   a[rand1][i+1]=a[rand1][i];
	a[rand1][1]=c;
  }
}
int main ()
{
freopen("tablete.in","r",stdin);
freopen("tablete.out","w",stdout);
scanf("%d%d",&n,&k);
poz=2;
rand1=1;
rand2=2;
while(poz<=n)
{

if(k%2==0)
 a[rand1][k]=t+k;
else
   a[rand1][k]=t+k+1;
x=a[rand1][k];
a[rand2][k]=t+2*k;y=t+2*k;




poz2=1;poz3=1;
for(i=1;i<=x-1-t;i++)
{
 if(poz2<k)
 {
	a[rand1][i]=t+i;
poz2++;
} //if
 else
 {
	a[rand2][poz3]=t+i;
  poz3++;
 }//else
}//for





for(i=x+1;i<=y-1;i++)
{

 a[rand2][poz3]=i;
poz3++;
} //for




fin=2*n;
poz2=k+1;poz3=k+1;
for(i=y+1;i<=2*n+t;i++)
{
 if(poz2<=n)
 {
	a[rand1][poz2]=i;
poz2++;
} //if
 else
 {
	a[rand2][poz3]=i;
  poz3++;
 }//else
}//for
t=t+2*n;
rand1=rand1+2;
rand2=rand2+2;
poz=poz+2;
if(poz-1==n)
   sing_linie();

}    //while
for(i=1;i<=n;i++)
{
   for(j=1;j<=n;j++)
	  printf("%ld ",a[i][j]);
printf("\n");
}
return 0;
}