Cod sursa(job #2214227)

Utilizator DawlauAndrei Blahovici Dawlau Data 18 iunie 2018 16:11:25
Problema Aprindere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <vector>
#include <bitset>

using namespace std;

ifstream fin("aprindere.in");
ofstream fout("aprindere.out");

int main() {

	int N, M;
	fin >> N >> M;

	vector <int> Switches;
	Switches.resize(N);

	vector <bool> bulbs;
	bulbs.resize(N);

	for (int idx = 0; idx < N; ++idx) {

		bool bulb;
		fin >> bulb;
		bulbs[idx] = bulb;
	}

	int cost = 0;
	for (; M; --M) {

		int C, Tc, NRc;
		fin >> C >> Tc >> NRc;

		bool change = false;
		for (int idx = 0; idx < NRc; ++idx) {

			fin >> Switches[idx];
			if (!bulbs[Switches[idx]])
				change = true;
		}

		if (change) {

			cost += Tc;
			for(int idx = 0; idx < NRc; ++idx)
				bulbs[Switches[idx]] = bulbs[Switches[idx]] ^ 1;
		}
	}

	fout << cost;
}