Cod sursa(job #197098)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 1 iulie 2008 13:30:37
Problema Lacate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <cstring>
const int NMAX=128*256;
int n,nr[NMAX],i,j,k,m,a[257][257];
bool u[NMAX];
int main(){
    freopen("lacate.in","r",stdin);
    freopen("lacate.out","w",stdout);
    scanf("%d",&n);
    m=(n*(n-1))/2;
    printf("%d %d\n",m,n-1);
    for (i=1;i<n;++i) {a[1][i]=i;
                       nr[i]=1;
                       u[i]=true;}
    for (i=2;i<=n;++i){
        u[a[i-1][i-1]]=false;
        for (j=1,k=0;j<=m && k<n-1;++j)
         if (!u[j] && nr[j]<2)
          if (j>=a[i-1][k+1]){
            a[i][++k]=j;
            u[j]=true;
            nr[j]++;}
        memset(u,false,sizeof(u));
        for (j=1;j<n;++j) u[a[i][j]]=true;
        }
    for (i=1;i<=n;++i){
        for (j=1;j<n;++j) 
          printf("%d ",a[i][j]);
        printf("\n");
        }
    return 0;
}