Cod sursa(job #529859)

Utilizator DaninetDani Biro Daninet Data 6 februarie 2011 13:09:58
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#include <vector>
bool light[1000]; 

struct lightSwitch {
	int id;
	int time;
	int roomNum;
	std::vector<int> rooms;
}aux;

std::vector<lightSwitch> sw;

int main() {
	FILE *f, *g;
	f = fopen("aprindere.in", "r");
	g = fopen("aprindere.out", "w");
	
	int n,m;
	fscanf(f, "%d %d", &n, &m);
	
	for(int i = 0; i<n; ++i) 
		fscanf(f, "%d", &light[i]);
	
	for(int i = 0; i<m; ++i) {
		aux.rooms.clear();
		fscanf(f, "%d %d %d", &aux.id, &aux.time, &aux.roomNum);
		int r;
		for(int j = 0; j<aux.roomNum; ++j) {
			fscanf(f, "%d", &r);
			aux.rooms.push_back(r);
		}
		sw.push_back(aux);
	}
	int res = 0;

	
	for(int i = 0; i<n; ++i){
		if(!light[i]) 
			for(int j = 0; j<m; ++j){
				if (sw[j].id == i) {
					for(int k = 0; k<sw[j].roomNum; ++k) {
						light[sw[j].rooms[k]] = !light[sw[j].rooms[k]];
					}
					res+=sw[j].time;
					break;
				}
			}
	}
	
	fprintf(g, "%d", res);
	fclose(g);
}