Cod sursa(job #872575)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 6 februarie 2013 11:59:58
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <stdio.h>
#include <bitset>
#include <assert.h>
using namespace std;

FILE *fi = fopen ("aprindere.in", "r");
FILE *fo = fopen ("aprindere.out", "w");

const int nmax = 1002;
int N, M, T;
bitset <nmax> B;

void cit ()
{
    fscanf (fi, "%d%d", &N, &M);
    for (int i = 0, b; i < N; i++)
    {
        fscanf (fi, "%d", &b);
        B[i] = b;
    }
}

void rez ()
{
    int c, t, nr, c2;
    while (M --)
    {
        fscanf (fi, "%d%d%d", &c, &t, &nr);
        if (B[c] == 0)
        {
            T += t;

            while (nr --)
            {
                fscanf (fi, "%d", &c2);
                if (B[c2] == 0)
                    B[c2] = 1;
                else
                    B[c2] = 0;
            }
        }
        else
            while (nr --)
            {
                fscanf (fi, "%d", &c2);
            }
    }

}

void afi ()
{
    for (int i = 1; i < N; i++)
        B[0] = B[0] & B[i];
    if (B[0] == 1)
        fprintf (fo, "%d ", T);
    else
        assert (0);
}

int main ()
{
    cit ();
    rez ();
    afi ();
    return 0;
}