Cod sursa(job #203525)

Utilizator Omega91Nicodei Eduard Omega91 Data 17 august 2008 11:55:41
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <cstdio>
#include <vector>
#include <algorithm>

int const NMAX = 1001;

typedef struct camera {
	bool stare; //0=stins, 1=aprins
	int timp;
	int schimblen;
	camera* schimba[NMAX];
};

camera cam[NMAX];
int N, Trasp;
void citire()
{
	
	int M, C, Tc, NRc, i, j, st, ind;
	FILE *f1;
	f1 = fopen("aprindere.in", "r");
	fscanf(f1, "%d %d\n", &N, &M);
	//cam = new camera [N];
	for (i = 0; i != N; ++i) {
		fscanf(f1, "%d", &st);
		cam[i].stare = st;
	}
	for (i = 0; i != M; ++i) {
		fscanf(f1, "%d %d %d", &C, &Tc, &NRc);
		cam[C].timp = Tc;
		for (j = 0; j != NRc; ++j) {
			fscanf(f1, "%d", &ind);
			cam[C].schimba[cam[C].schimblen++]=&cam[ind];
		}
	}
	fclose(f1);
}

void rezolvare()
{
	for (int i = 0; i != N; ++i) {
		if (!cam[i].stare) {
			Trasp += cam[i].timp;
			cam[i].stare = 1;
			int aux = cam[i].schimblen;
			for (int j = 0; j != aux; ++j)
				cam[i].schimba[j] -> stare = !cam[i].schimba[j] -> stare;
		}
	}
}

void afisare()
{
	FILE *f;
	f = fopen("aprindere.out", "w");
	fprintf(f, "%d\n", Trasp);
	fclose(f);
}

int main()
{
	citire();
	rezolvare();
	afisare();
	return 0;
}