Pagini recente » Cod sursa (job #1313289) | Cod sursa (job #2778704) | Cod sursa (job #2121076) | Cod sursa (job #1221741) | Cod sursa (job #3332413)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("aprindere.in");
ofstream fout("aprindere.out");
struct intrerupator {
int timp, nr_cam;
int c[105];
};
int a[1005];
intrerupator v[1005];
int main()
{
int n, m;
fin >> n >> m; // citim nr de camere si nr de intrerupatoare
for (int i = 0; i < n; i++) // citim starea pt fiecare camera (inchis / deschis)
fin >> a[i];
for (int i = 0; i < n; i++)
v[i].timp = 0, v[i].nr_cam = 0; // initizam fiecare camera in care ar putea fi un intreruptor cu 0
for (int i = 0; i < m; i++) {
int cam;
fin >> cam; // citim camera
fin >> v[cam].timp >> v[cam].nr_cam; // pentru intrerupatorul din camera cam citim timpul si nr de camerele pr care le modifica
for (int j = 0; j < v[cam].nr_cam; j++) // citim camerele pe care le modifica
fin >> v[cam].c[j];
}
int t_total = 0; // timpul total pt a aprinde toate luminile
for (int cam = 0; cam < n; cam++)
if (a[cam] == 0) { // daca lumina din camera este stinsa, trebuie sa folosim intrerupatorul
//deoarece nu vor mai exista alte intrerupatoare care vor deschide lumina in camera aceaste
// problema spune ca un intrerupator din camera i poate modifica starea doar camerei i si urmatoarelor
t_total += v[cam].timp; // adaugam la timpul total
for (int j = 0; j < v[cam].nr_cam; j++)
a[v[cam].c[j]] ^= 1; // schimbam starea fiecarei camere din lista
}
fout << t_total;
return 0;
}