Cod sursa(job #7898)

Utilizator wefgefAndrei Grigorean wefgef Data 22 ianuarie 2007 21:51:15
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>
#include <vector>

using namespace std;

#define pb push_back
#define sz size()

#define Nmax 1024

int n, m, stare[Nmax], elem[Nmax], timp[Nmax], val;
vector<int> v[Nmax];

void readdata()
{
	freopen("aprindere.in", "r", stdin);
	freopen("aprindere.out", "w", stdout);
	
	int i, j, c, nr;
	
	scanf("%d %d\n", &n, &m);
	for (i = 0; i < n; ++i)
		scanf("%d", &stare[i]);
	for (i = 0; i < m; ++i)
	{
		scanf("%d %d %d", &c, &timp[i], &nr);
		elem[c] = i;
		for (j = 0; j < nr; ++j)
		{
			scanf("%d", &val);
			v[i].pb(val);
		}
	}
}

void solve()
{
	int rez = 0, i, j, x;
	
	for (i = 0; i < n; ++i)
		if (!stare[i])
		{
			x = elem[i];
			rez += timp[x];
			for (j = 0; j < v[x].sz; ++j)
				stare[v[x][j]] ^= 1;
		}
	printf("%d\n", rez);
}

int main()
{
	readdata();
	solve();
	return 0;
}