Cod sursa(job #293)

Utilizator adyshorcont de teste adyshor 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;
}