Pagini recente » Cod sursa (job #383614) | Cod sursa (job #1243148) | Cod sursa (job #3355105) | Cod sursa (job #1331546) | Cod sursa (job #3331322)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("aprindere.in");
ofstream out("aprindere.out");
struct SwitchInfo {
bool exists = false; ///exista sau nu exista intrerupator
int t = 0; ///timpul de apasare
int nr = 0; ///cate camere modifica intrerupatorul
int c[105]; ///cate camere modifica intrerupatorul
};
int main()
{
int n, m;
in >> n >> m;
int a[1001]; ///0 sau 1, adica inchis sau deschis
for(int i = 0; i < n; i++)
in >> a[i];
SwitchInfo sw[1001]; ///vector de intrerupatoare
for(int k = 0; k < m; k++) {
int C, T, NRC;
in >> C >> T >> NRC;
sw[C].exists = true;
sw[C].t = T;
sw[C].nr = NRC;
for(int j = 0; j < NRC; j++)
in >> sw[C].c[j];
}
long long sum = 0; ///timp total
for(int i = 0; i < n; i++) {
if(sw[i].exists == false) {
continue;
}
if(a[i] == 0) {
for(int j = 0; j < sw[i].nr; j++) {
int room = sw[i].c[j]; ///variabila room tine minte numarul camerei curente
a[room] ^= 1; ///schimbam starea in acea camera
}
sum += sw[i].t; ///adunam timpul de actionare al intrerupatorului
}
}
out << sum;
return 0;
}