Cod sursa(job #1081782)

Utilizator razvan9310FMI - Razvan Damachi razvan9310 Data 13 ianuarie 2014 21:44:00
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <vector>
#include <bitset>
#define MAXN 1000
using namespace std;

int N, M;
bitset<MAXN> aprins;

struct intrerupator {
	int cost, nrc;
	vector<int> camere;
}v[MAXN];

void input() {
	ifstream in("aprindere.in");
	in >> N >> M;

	for (int i = 0; i < N; ++i) {
		int val;
		in >> val;
		if (val) {
			aprins[i] = 1;
		}
	}

	for (int i = 0; i < M; ++i) {
		int cam, c, nr, val;
		in >> cam >> c >> nr;
		v[cam].cost = c, v[cam].nrc = nr;

		for (int j = 0; j < nr; ++j) {
			in >> val;
			v[cam].camere.push_back(val);
		}
	}

	in.close();
}

int solve() {
	int total = 0;

	for (int i = 0; i < N; ++i) {
		if (aprins[i]) {
			continue;
		}

		total += v[i].cost;
		int size = v[i].camere.size();

		for (int j = 0; j < size; ++j) {
			aprins[v[i].camere[j]] = 1 - aprins[v[i].camere[j]];
		}
	}

	return total;
}

void output() {
	ofstream out("aprindere.out");
	out << solve();
	out.close();
}

int main() {
	input();
	output();
	return 0;
}