Cod sursa(job #1508481)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 22 octombrie 2015 16:54:47
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
#include <vector>
#include <tuple>
#include <algorithm>
#include <iostream>
using namespace std;

int main(){
	ifstream f("aprindere.in");
	ofstream g("aprindere.out");
	int n, m, s;
	f >> n >> m;
	vector<uint8_t> v(n, 0);
	for(auto& x : v){
		f >> x;
		x -= '0'; }
	vector<tuple<int, int, vector<int>>> becuri(m);
	for(auto& x : becuri){
		f >> get<0>(x) >> get<1>(x);
		f >> s;
		get<2>(x).resize(s);
		for(auto& y : get<2>(x)){
			f >> y; } }

	sort(begin(becuri), end(becuri));

	int cost = 0;

	for(const auto& x : becuri){
		if(!v[get<0>(x)]){
			cost += get<1>(x);
			for(const auto y : get<2>(x)){
				v[y] ^= 1; } } }

	g << cost;
	return 0; }