Cod sursa(job #1424256)

Utilizator BLz0rDospra Cristian BLz0r Data 23 aprilie 2015 19:56:41
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2 kb
#include <cstdio>
using namespace std;

#define Nmax 1030

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

int st[Nmax], dr[Nmax], Heavy[Nmax], Light[Nmax];

int NrElem ( int v[], int N ){
    int nr = 0;

    for ( int i = 1; i <= N; ++i )
        if ( v[i] > 0 )
            nr++ ;
    return nr;
}

int GetElem ( int v[], int N ){

    for ( int i = 1; i <= N; ++i )
        if ( v[i] == 1 )
            return i;
}

int main(){
    int N, M, K, r;

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

    for ( int i = 1; i <= N; ++i )
        Heavy[i] = Light[i] = 1;

    for ( int i = 1; i <= M; ++i ){
        fscanf ( f, "%d", &K );

        for ( int j = 1; j <= K; ++j )
            fscanf ( f, "%d", &st[j] );

        for ( int j = 1; j <= K; ++j )
            fscanf ( f, "%d", &dr[j] );

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

        if ( r == 0 ){
            for ( int j = 1; j <= K; ++j ){
                Heavy[st[j]]--; Light[st[j]]--;
                Heavy[dr[j]]--; Light[dr[j]]--;
            }
            continue;
        }

        if ( r == 1 ){
            for ( int j = 1; j <= K; ++j ){
                Heavy[st[j]]++;
                Light[dr[j]]++;
            }
            for ( int j = 1; j <= N; ++j ){
                Heavy[j]--;
                Light[j]--;
            }

            continue;
        }

        if ( r == 2 ) {
            for ( int j = 1; j <= K; ++j ){
                Heavy[dr[j]]++;
                Light[st[j]]++;
            }
            for ( int j = 1; j <= N; ++j ){
                Heavy[j]--;
                Light[j]--;
            }

        }
    }

    if ( NrElem ( Heavy, N ) == 1 && NrElem ( Light, N ) == 0 ){
        fprintf ( g, "%d", GetElem ( Heavy, N ) );
        return 0;
    }
    if ( NrElem ( Heavy, N ) == 0 && NrElem ( Light, N ) == 1 ){
        fprintf ( g, "%d", GetElem ( Light, N ) );
        return 0;
    }
    fprintf ( g, "%d", 0 );

    return 0;
}