Pagini recente » Cod sursa (job #3342630) | Cod sursa (job #792305) | Cod sursa (job #1465092) | Cod sursa (job #3303617) | Cod sursa (job #3331004)
#include <bits/stdc++.h>
using namespace std;
struct Intrerupator {
int poz; // camera unde se află
int timp; // timpul de apăsare
int nr; // câte camere modifică
int c[105]; // lista camerelor afectate (include mereu poz)
};
int main() {
ifstream fin("aprindere.in");
ofstream fout("aprindere.out");
int n, m;
fin >> n >> m;
int a[105]; // starea becurilor
for (int i = 0; i < n; i++)
fin >> a[i];
Intrerupator v[105];
for (int i = 0; i < m; i++) {
fin >> v[i].poz >> v[i].timp >> v[i].nr;
for (int j = 0; j < v[i].nr; j++)
fin >> v[i].c[j];
}
int sum = 0;
// parcurgere deterministă, greedy
for (int i = 0; i < m; i++) {
int poz = v[i].poz;
// dacă becul din camera poz este stins, trebuie să apăsăm
if (a[poz] == 0) {
sum += v[i].timp;
// toggle pe toate camerele afectate
for (int j = 0; j < v[i].nr; j++) {
int cam = v[i].c[j];
a[cam] = 1 - a[cam];
}
}
}
fout << sum;
return 0;
}