Cod sursa(job #267485)

Utilizator scvalexAlexandru Scvortov scvalex Data 27 februarie 2009 16:11:31
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <vector>

using namespace std;

typedef struct {
	int t, n;
	vector<int> cs;
} Camera;

int N, M;
bool C[1001];
Camera R[1001];

int main(int argc, char *argv[]) {
	int i, j, aux, cc, t;

	FILE *fi = fopen("aprindere.in", "r");
	fscanf(fi, "%d %d", &N, &M);
	for (i = 0; i < N; ++i) {
		fscanf(fi, "%d", &aux);
		if (aux)
			C[i] = true;
	}
	for (i = 0; i < M; ++i) {
		fscanf(fi, "%d", &cc);
		fscanf(fi, "%d %d", &R[cc].t, &R[cc].n);
		for (j = 0; j < R[cc].n; ++j) {
			fscanf(fi, "%d", &aux);
			R[cc].cs.push_back(aux);
		}
	}
	fclose(fi);

	t = 0;
	for (i = 0; i < N; ++i)
		if (!C[i]) {
			//printf("Flipping %d\n", i);
			C[i] = true;
			t += R[i].t;
			for (vector<int>::iterator jj = R[i].cs.begin(); jj != R[i].cs.end(); ++jj)
				C[*jj] = !C[*jj];
		}

	FILE *fo = fopen("aprindere.out", "w");
	fprintf(fo, "%d\n", t);
	fclose(fo);

	return 0;
}