Pagini recente » Cod sursa (job #1627262) | Cod sursa (job #2966621) | Cod sursa (job #269947) | Cod sursa (job #2513112) | Cod sursa (job #2143033)
#include <bits/stdc++.h>
using namespace std;
ifstream in("aprindere.in");
ofstream out("aprindere.out");
struct intrerupator {
int nrCamera;
int timpActionare;
int nrIntrerupatoare;
vector< int > v;
};
int cmpFnc(const intrerupator &a, const intrerupator &b) {
return a.nrCamera < b.nrCamera;
}
int main() {
int n, m; in >> n >> m;
vector< int > camere(n);
for(auto& it: camere) in >> it;
vector< intrerupator > intrerupatoare(m);
for(int i = 0; i < m; ++i) {
in >> intrerupatoare[i].nrCamera >> intrerupatoare[i].timpActionare >> intrerupatoare[i].nrIntrerupatoare;
for(int j = 0; j < intrerupatoare[i].nrIntrerupatoare; ++j) {
int x; in >> x;
intrerupatoare[i].v.push_back(x);
}
sort(intrerupatoare[i].v.begin(), intrerupatoare[i].v.end());
}
sort(intrerupatoare.begin(), intrerupatoare.end(), cmpFnc);
int ans = 0;
for(int i = 0; i < m; ++i) {
if(camere[intrerupatoare[i].nrCamera] == 0) {
ans += intrerupatoare[i].timpActionare;
for(int j = 0; j < intrerupatoare[i].nrIntrerupatoare; ++j) {
camere[intrerupatoare[i].v[j]] = 1 - camere[intrerupatoare[i].v[j]];
}
}
}
out << ans << '\n';
in.close(); out.close();
return 0;
}