Cod sursa(job #1525388)

Utilizator BLz0rDospra Cristian BLz0r Data 14 noiembrie 2015 23:59:56
Problema Lacate Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <cstdio>
#include <bitset>
using namespace std;

#define Nmax 260
#define Cmax 32642

FILE *f = fopen ( "lacate.in", "r" );
FILE *g = fopen ( "lacate.out", "w" );

bitset < Nmax > Used[Cmax], Rel[Nmax];
int cate[Nmax];

int main(){

    int N, Chei, Lacate;

    fscanf ( f, "%d", &N );

    Chei = N-1;
    Lacate = N*(N-1) >> 1;

    for ( int i = 1; i <= Lacate; ++i ){

        int pred;
        for ( int j = 1; j <= N; ++j ){
            if ( cate[j] == Chei ) continue;

            cate[j]++;
            Used[j][i] = 1;
            pred = j;
            break;
        }

        for ( int j = 1; j <= N; ++j ){
            if ( j == pred || cate[j] == Chei || Rel[j][pred] ) continue;

            cate[j]++;
            Rel[j][pred] = Rel[pred][j] = 1;
            Used[j][i] = 1;
            break;
        }
    }

    fprintf ( g, "%d %d\n", Lacate, Chei );

    for ( int i = 1; i <= N; ++i ){
        for ( int j = 1; j <= Lacate; ++j ){
            if ( Used[i][j] )
                fprintf ( g, "%d ", j );
        }
        fprintf ( g, "\n" );
    }

    return 0;
}