Pagini recente » Cod sursa (job #1281128) | Cod sursa (job #464968) | Cod sursa (job #866924) | Cod sursa (job #1369520) | Cod sursa (job #2020296)
#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <vector>
#include <cstring>
#include <cctype>
#include <algorithm>
#include <climits>
using namespace std;
typedef long long LL;
#ifdef INFOARENA
#define ProblemName "aprindere"
#endif
#define MCONCAT(A, B) A B
#ifdef ProblemName
#define InFile MCONCAT(ProblemName, ".in")
#define OuFile MCONCAT(ProblemName, ".out")
#else
#define InFile "fis.in"
#define OuFile "fis.out"
#endif
const int MAXN = 1010;
bool v[MAXN];
pair< int, vector<int> > sw[MAXN];
int main() {
assert(freopen(InFile, "r", stdin));
assert(freopen(OuFile, "w", stdout));
int N, M;
scanf("%d%d", &N, &M);
for (int i = 0; i < N; ++i) {
int a;
scanf("%d", &a);
v[i] = (a != 0);
sw[i].first = -1;
}
while (M--) {
int c, tc, nc;
scanf("%d%d%d", &c, &tc, &nc);
sw[c].first = tc;
sw[c].second.resize(nc);
for (int i = 0; i < nc; ++i)
scanf("%d", &sw[c].second[i]);
}
int ans = 0;
for (int i = 0; i < N; ++i) {
if (v[i])
continue;
assert(sw[i].first >= 0);
ans += sw[i].first;
for (const auto &it : sw[i].second)
v[it] = !v[it];
}
printf("%d\n", ans);
return 0;
}