Cod sursa(job #293)
Utilizator | Data | 8 decembrie 2006 17:30:43 | |
---|---|---|---|
Problema | Lacate | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.64 kb |
#include<stdio.h>
#define NMAX 256
long A[33000];
long B[32769][257];
long ind;
long i , j , n;
long k , k1 , q;
int main()
{
freopen("lacate.in","r",stdin);
freopen("lacate.out","w",stdout);
scanf("%d",&n);
printf("%d %d\n",n*(n-1)/2 ,n-1);
k = n*(n-1)/2;
k1 = n-1;
for (i = 1 ; i <= k1 ; i++)
{
A[i]++;
B[1][i] = i;
}
for (i = 2 ; i <= n ; i++)
{
long z = 0;
for (j = 1 ; j < i ; j++)
{
for (q = 1 ; q <= k1 ; q++)
{
if (A[B[j][q]]==1)
{
B[i][0]++;
B[i][B[i][0]] = B[j][q];
A[B[j][q]]++;
break;
}
}
}
if (B[i][0]<k1)
{
for (j = 1 ; j <= k ; j++)
{
if (A[j]==0)
{
B[i][0]++;
B[i][B[i][0]] = j;
A[j]++;
if (B[i][0]==k1)
break;
}
}
}
}
for (i = 1 ; i <= n ; i++)
{
for (j = 1 ; j <= k1 ; j++)
printf("%ld ",B[i][j]);
printf("\n");
}
return 0;
}