Pagini recente » Cod sursa (job #3220421) | Cod sursa (job #2395793) | Cod sursa (job #2363382) | Cod sursa (job #1527506) | Cod sursa (job #81410)
Cod sursa(job #81410)
#include <cstdio>
#include <cstdlib>
int* v;
int n,m;
class intrerupator
{
private:
int nrc,time,*c;
public:
void RoomTime(int x,int y)
{
nrc=x;
time=y;
}
void initRooms()
{
c=(int *)malloc((nrc+1)*sizeof(int));
for (int i=1;i<=nrc;i++)
{
scanf("%d",&c[i]);
c[i]++;
}
}
void Trigger()
{
for (int i=1;i<=nrc;i++)
{
v[c[i]]=1-v[c[i]];
}
}
void increase(int &x)
{
x+=time;
}
} * a;
void van(void)
{
int c,nrc,t,i;
freopen("aprindere.in","rt",stdin);
freopen("aprindere.out","wt",stdout);
scanf("%d%d",&n,&m);
v=(int *)malloc((n+1)*sizeof(int));
a=(intrerupator *)malloc((n+1)*sizeof(intrerupator));
for (i=1;i<=n;i++)
{
scanf("%d",&v[i]);
}
for (i=1;i<=m;i++)
{
scanf("%d%d%d",&c,&t,&nrc);
c++;
a[c].RoomTime(nrc,t);
a[c].initRooms();
}
fclose(stdin);
}
void ila(void)
{
int timp=0;
for (int i=1;i<=n;i++)
{
if (v[i]!=1)
{
a[i].Trigger();
a[i].increase(timp);
}
}
printf("%d\n",timp);
fclose(stdout);
}
int main(void)
{
van();ila();
return 0;
}