Cod sursa(job #3267760)

Utilizator maxtraAlex Deonise maxtra Data 12 ianuarie 2025 11:36:38
Problema Aprindere Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("aprindere.in");
ofstream out("aprindere.out");

int main() {
    int n, m, v[1002], a, t, c, v2[1002], s = 0;
    bool inchis;
    
    in >> n >> m;

    // Citim stările inițiale ale becurilor
    for (int i = 0; i < n; i++) {
        in >> v[i];
    }

    // Procesăm fiecare întrerupător
    for (int i = 0; i < m; i++) {
        in >> a >> t >> c;
        inchis = false;  // Setați variabila pentru fiecare întrerupător

        // Citim camerele care sunt afectate de acest întrerupător
        for (int j = 0; j < c; j++) {
            in >> v2[j];
            // Verificăm dacă există cel puțin un bec stins în camerele afectate
            if (v[v2[j]] == 0) {
                inchis = true;
            }
        }

        // Dacă cel puțin un bec este stins, activăm întrerupătorul
        if (inchis) {
            // Inversăm starea becurilor în camerele afectate
            for (int j = 0; j < c; j++) {
                v[v2[j]] = 1 - v[v2[j]]; // 1 devine 0 și 0 devine 1
            }
            // Adăugăm timpul necesar pentru acțiunea acestui întrerupător
            s += t;
        }
    }

    out << s;

    return 0;
}