Pagini recente » Cod sursa (job #2946001) | Cod sursa (job #3165211) | Cod sursa (job #3261983) | Cod sursa (job #2397901) | Cod sursa (job #2965276)
//https://infoarena.ro/problema/aprindere
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("aprindere.in");
ofstream fout ("aprindere.out");
#pragma pack(1)
struct camera
{
short int c;
short int t;
int nr;
int nrc[1010];
}c[1010];
bool comparare(struct camera a,struct camera b)
{
if(a.c<b.c)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int i,j,n,m,tt=0,loc;
bool b;
bitset <1010> bit;
fin>>n>>m;
for(i=0;i<n;i++)
{
fin>>b;
//cout<<b;
bit[i]=b;
}
for(i=1;i<n;i++)
{
c[i].c=i;
}
for(i=0;i<m;i++)
{
fin>>loc;
fin>>c[loc].t>>c[loc].nr;
//cout<<c[loc].c<<" "<<c[loc].t<<" "<<c[loc].nr<<"\n";
for(j=0;j<c[loc].nr;j++)
{
fin>>c[loc].nrc[j];
}
}
sort(c,c+m,comparare);
// for(i=0;i<n;i++)
// {
// //cout<<bit[i];
// }
for(i=0;i<n;i++)
{
//cout<<c[i].c<<" "<<c[i].t<<" "<<c[i].nr<<" ";
//cout<<i<<" ";
if(bit[i]==0)
{
tt=tt+c[i].t;
//cout<<i<<" "<<c[i].nr<<" ";
for(j=0;j<c[i].nr;j++)
{
//cout<<c[i].nrc[j]<<" "<<bit[c[i].nrc[j]]<<" ";
if(bit[c[i].nrc[j]]==1)
{
bit[c[i].nrc[j]]=0;
}
else
{
bit[c[i].nrc[j]]=1;
}
//cout<<bit[c[i].nrc[j]]<<" ";
}
}
//cout<<"\n";
}
fout<<tt;
return 0;
}