Pagini recente » Cod sursa (job #892324) | Cod sursa (job #1430294) | Cod sursa (job #1214951) | Cod sursa (job #3218344) | Cod sursa (job #117159)
Cod sursa(job #117159)
#include<stdio.h>
#include<string.h>
short z[101],elem,qqq,x[101][101],i,kkt,fin,w,j,n,m,k,l,a,s,poz,q;
char y[101];
void golesc(short poz)
{
short i,j;
while (x[poz][0]>1)
{
for (i=n+1;i>poz;i--)
while (x[i][0]<n&&x[poz][0]>1)
{
x[i][0]++;
x[i][x[i][0]]=x[poz][x[poz][0]];
x[poz][x[poz][0]]=0;
x[poz][0]--;
printf("%u %u\n",poz,i);
}
}
}
short caut(short nr,short q)
{
short i,j,k,p;
k=1000;
for (i=q+1;i<=n+1;i++)
{
for (j=x[i][0];j>=1;j--)
if (x[i][j]==nr)
{
if (j<k) {k=j;p=i;}
j=1;
}
}
return p;
}
short clear(short poz,short nr)
{
short i,j,k;
k=1;
while (x[poz][x[poz][0]]!=nr)
{
for (i=n+1;i>q;i--)
if (x[i][0]<n&&poz&&x[poz][x[poz][0]]!=nr&&i!=poz&&x[poz][0])
{
x[i][++x[i][0]]=x[poz][x[poz][0]];
x[poz][x[poz][0]]=0;
x[poz][0]--;
printf("%u %u\n",poz,i);
i=n+2;
}
}
return 1;
}
int main()
{
freopen("tije.in","r",stdin);
freopen("tije.out","w",stdout);
scanf("%u",&n);
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
x[i][++x[i][0]]=i;
for (i=1;i<=n;i++)
{
golesc(i);
memset(y,0,sizeof(y));
y[x[i][1]]=1;
while (x[i][0]<n)
{
fin=101;
elem=-1;
for (j=1;j<=n;j++)
if (y[j]==0)
{
for (l=i+1;l<=n+1;l++)
{
for (w=x[l][0];w>=1&&x[l][w]!=j;w--);
s=x[l][0]-w;
if (s<fin) if (n-(n-x[l][0])-(n-x[i][0])>=s) {fin=s; poz=l; elem=j;}
}
}
kkt=clear(poz,elem); // clear tija poz pana la elementu j
x[poz][x[poz][0]--]=0;
x[i][++x[i][0]]=elem;
printf("%u %u\n",poz,i);
y[elem]=1;
}
}
return 0;
}