Pagini recente » Cod sursa (job #2394492) | Cod sursa (job #344880) | Cod sursa (job #700698) | Borderou de evaluare (job #2153037) | Cod sursa (job #3330985)
#include <fstream>
using namespace std;
struct Intrerupator {
int timp;
int nr;
int camere[101];
bool exista;
};
int main() {
ifstream fin("aprindere.in");
ofstream fout("aprindere.out");
int N, M;
fin >> N >> M;
int stare[1001];
for (int i = 0; i < N; i++)
fin >> stare[i];
Intrerupator intr[1001];
for (int i = 0; i < N; i++)
intr[i].exista = false;
// citire întrerupătoare
for (int i = 0; i < M; i++) {
int c;
fin >> c;
intr[c].exista = true;
fin >> intr[c].timp >> intr[c].nr;
for (int j = 0; j < intr[c].nr; j++)
fin >> intr[c].camere[j];
}
int timpTotal = 0;
// parcurgere camere
for (int i = 0; i < N; i++) {
if (stare[i] == 0) {
// suntem obligați să folosim întrerupătorul
timpTotal += intr[i].timp;
for (int j = 0; j < intr[i].nr; j++) {
int cam = intr[i].camere[j];
stare[cam] = 1 - stare[cam]; // inversare bec
}
}
}
fout << timpTotal;
fin.close();
fout.close();
return 0;
}