Cod sursa(job #3332335)

Utilizator razvang24Razvan GIrlea razvang24 Data 6 ianuarie 2026 10:14:44
Problema Aprindere Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
using namespace std;
ifstream fin("aprindere.in");
ofstream fout("aprindere.out");
int N, M;
int init[1005];// starea initiala a becurilor
int T[1005];// timpul intrerupatorului din camera i (0 daca nu exista)
int affect[1005][105];// camerele afectate de intrerupator
int nr_affect[1005];// cate camere afecteaza fiecare intrerupator
int flip[1005];// flip-uri aplicate pe fiecare camera
int main() {
    fin>>N>>M;
    for(int i=0;i<N;i++)
        fin>>init[i];
    for(int i=0;i<N;i++)
    {
        T[i]=0;
        nr_affect[i]=0;
        flip[i]=0;
    }
    for(int i=0;i<M;i++)
    {
        int C,TC,NRC;
        fin>>C>>TC>>NRC;
        T[C]=TC;
        nr_affect[C]=NRC;
        for(int j=0;j<NRC;j++)
            fin>>affect[C][j];
    }
    int curFlip=0;
    long long ans=0;
    for(int i=0;i<N;i++)
    {
        curFlip=(curFlip+flip[i])%2;
        int currentState=init[i]^curFlip;
        if(currentState==0)
        {// suntem obligati sa apasam intrerupatorul din i
            ans+=T[i];
            for(int j=0;j<nr_affect[i];j++)
            {
                int x=affect[i][j];
                flip[x]^= 1;
            }
        }
    }
    fout<<ans<<"\n";
    return 0;
}