Cod sursa(job #3331322)

Utilizator octavianioan_15Gainaru Octavian octavianioan_15 Data 26 decembrie 2025 18:07:48
Problema Aprindere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <iostream>
#include <fstream>

using namespace std;

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

struct SwitchInfo {
bool exists = false; ///exista sau nu exista intrerupator
int t = 0; ///timpul de apasare
int nr = 0; ///cate camere modifica intrerupatorul
int c[105]; ///cate camere modifica intrerupatorul
};
int main()
{
    int n, m;
    in >> n >> m;
    int a[1001]; ///0 sau 1, adica inchis sau deschis
    for(int i = 0; i < n; i++)
        in >> a[i];
    SwitchInfo sw[1001]; ///vector de intrerupatoare

    for(int k = 0; k < m; k++) {
        int C, T, NRC;
        in >> C >> T >> NRC;
        sw[C].exists = true;
        sw[C].t = T;
        sw[C].nr = NRC;
        for(int j = 0; j < NRC; j++)
            in >> sw[C].c[j];
    }

    long long sum = 0; ///timp total

    for(int i = 0; i < n; i++) {
        if(sw[i].exists == false) {
            continue;
        }

        if(a[i] == 0) {
            for(int j = 0; j < sw[i].nr; j++) {
                int room = sw[i].c[j]; ///variabila room tine minte numarul camerei curente
                a[room] ^= 1; ///schimbam starea in acea camera
            }
        sum += sw[i].t; ///adunam timpul de actionare al intrerupatorului
        }
    }
    out << sum;
    return 0;
}