Cod sursa(job #3330983)

Utilizator piaaaaaaaioana praj piaaaaaaa Data 23 decembrie 2025 16:52:01
Problema Aprindere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#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;
}