Pagini recente » Cod sursa (job #1510771) | Cod sursa (job #1047974) | Cod sursa (job #337281) | Cod sursa (job #1292156) | Cod sursa (job #167214)
Cod sursa(job #167214)
#include <stdio.h>
int St[111][111], N, Lev[111], X[111];
int main()
{
int i, j;
freopen("tije.in", "r", stdin);
freopen("tije.out", "w", stdout);
scanf("%d", &N);
for (i = 1; i <= N; i++)
for (j = 1; j <= N; j++) St[i][j] = i, Lev[i] = N;
//first set
for (i = 1; i <= N; i++)
{
Lev[i]--;
St[N+1][++Lev[N+1]] = i;
printf("%d %d\n", i, N+1);
}
for (i = 2; i <= N; i++)
{
St[i][++Lev[i]] = 1;
Lev[1]--;
printf("1 %d\n", i);
}
while (Lev[N+1]>0)
{
printf("%d 1\n", N+1);
St[1][++Lev[1]] = St[N+1][Lev[N+1]];
St[N+1][Lev[N+1]--] = 0;
}
for (i = 2; i <= N; i++)
{
for (j = N; j >= i; j--)
{
while (St[j][Lev[j]]!=j)
{
St[j+1][++Lev[j+1]] = St[j][Lev[j]];
St[j][Lev[j]--] = 0;
printf("%d %d\n", j, j+1);
}
printf("%d %d\n", j, N+1);
St[j][Lev[j]--] = 0;
St[N+1][++Lev[N+1]] = j;
}
for (j = i+1; j <= N; j++)
{
St[i][Lev[i]--] = 0;
St[j][++Lev[j]] = i;
printf("%d %d\n", i, j);
}
while (Lev[N+1]>0)
{
printf("%d %d\n", N+1, i);
St[i][++Lev[i]] = St[N+1][Lev[N+1]];
St[N+1][Lev[N+1]--] = 0;
}
j = 0;
}
for (i = 1; i <= N; i++)
{
for (j = 1; j <= N; j++) X[j] = 0;
for (j = 1; j <= N; j++)
X[ St[i][j] ] = 1;
for (j = 1; j <= N; j++)
if (!X[j]) { printf("Not Good\n"); return 0; }
}
return 0;
}