Cod sursa(job #75631)

Utilizator sealTudose Vlad seal Data 4 august 2007 14:12:58
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
using namespace std;
#include<cstdio>
#include<algorithm>
#define Nm 1000
#define Nrm 100
int M[Nm][Nrm],A[Nm],C[Nm],T[Nm],Nr[Nm],n,m,ans;

void read()
{
    int i,j;

    freopen("aprindere.in","r",stdin);
    scanf("%d%d",&n,&m);
    for(i=0;i<n;++i)
        scanf("%d",A+i);
    for(i=0;i<m;++i)
    {
        scanf("%d%d%d",C+i,T+i,Nr+i);
        for(j=0;j<Nr[i];++j)
            scanf("%d",&M[i][j]);
    }
}

bool cmp(int a, int b)
{
    return C[a]<C[b];
}

void solve()
{
    int I[Nm],i,j;

    for(i=0;i<m;++i)
        I[i]=i;
    sort(I,I+m,cmp);

    for(i=0;i<m;++i)
        if(!A[C[I[i]]])
        {
            ans+=T[I[i]];
            for(j=0;j<Nr[I[i]];++j)
                A[M[I[i]][j]]=!A[M[I[i]][j]];
        }
}

void write()
{
    freopen("aprindere.out","w",stdout);
    printf("%d\n",ans);
}

int main()
{
    read();
    solve();
    write();
    return 0;
}