Pagini recente » Cod sursa (job #3308588) | Cod sursa (job #2494384) | Cod sursa (job #2366626) | Monitorul de evaluare | Cod sursa (job #3332335)
#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;
}