Pagini recente » Cod sursa (job #2436000) | Cod sursa (job #341076) | Cod sursa (job #435760) | Cod sursa (job #1023131) | Cod sursa (job #2430819)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("aprindere.in");
ofstream fout("aprindere.out");
int N,M;
int f[1005];
struct switcher
{
int ss;
int time;
int nr;
int v[1005];
int need = 0;
};
switcher vec[1005];
void Read()
{
fin>>N>>M;
for(int i = 0; i<N; i++)
fin>>f[i];
for(int i = 1; i<=M; i++)
{
fin>>vec[i].ss>>vec[i].time>>vec[i].nr;
for(int j = 1; j<=vec[i].nr; j++)
{
fin>>vec[i].v[j];
if(f[vec[i].v[j]] == 0)
vec[i].need++;
}
}
}
bool CMP(switcher a,switcher b)
{
return a.ss < b.ss;
}
bool cmp(int i)
{
for(int j =1; j<=vec[i].nr; j++)
if(f[vec[i].v[j]] == 0)
return 1;
return 0;
}
int main()
{
long long sum = 0;
Read();
sort(vec+1,vec+M+1,CMP);
/* for(int i =1;i<=M;i++)
fout<<vec[i].ss<<" "<<vec[i].need<<"\n";*/
for(int i = 1; i<=M; i++)
{
if(cmp(i))
{
for(int j=1; j<=vec[i].nr; j++)
if(f[vec[i].v[j]] == 1)
{
f[vec[i].v[j]] = 0;
vec[i].need++;
}
else
{
f[vec[i].v[j]] = 1;
vec[i].need--;
}
sum = sum +vec[i].time;
}
}
fout<<sum<<"\n";
return 0;
}