Cod sursa(job #997346)

Utilizator DorelBarbuBarbu Dorel DorelBarbu Data 13 septembrie 2013 20:32:02
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <iostream>
#include <cstdio>
#define MAX_N 1010
#define MAX_M 1010
#define MAX_NR 110
#define MAX_T 1010
using namespace std;

int N , M , NR , T , C , stare[MAX_N] , sw[MAX_M][MAX_NR], timpi[MAX_N] , lg[MAX_N] ;

void citire()
{
    freopen("aprindere.in", "r", stdin);

    scanf( "%d %d" , &N , &M ) ;

    int i , j , t , aux ;


    for( i = 0 ; i < N ; i++ )
    {
        scanf( "%d" , &stare[i] ) ;
    }


    for( i = 0 ; i < M ; i++ )
    {
        scanf( "%d %d %d " , &C , &t , &NR ) ;

        timpi[C] = t ;

        lg[C] = NR ;

        for( j = 1 ; j <= NR ; j++ )
        {
            scanf( "%d" , &aux ) ;

            sw[C][j] = aux ;
        }
    }


}

void trigger_switch( int j )
{
    int i ;

    for( i = 1 ; i <= lg[j] ; i++ )
    {
        stare[sw[j][i]]=1-stare[sw[j][i]];
    }
}
int solve()
{
    int sol = 0 , i ;

    for( i = 0 ; i < N ; i++ )
    {
        if ( stare[i] == 0 )//daca lumina este stinsa
        {
            sol += timpi[i] ;

            trigger_switch(i);
        }
    }

    return sol ;
}

int main()
{
    freopen("aprindere.out","w",stdout);

    citire();

    int sol = solve() ;

    printf("%d", sol ) ;

    return 0 ;
}