Cod sursa(job #1551621)

Utilizator mariakKapros Maria mariak Data 16 decembrie 2015 09:33:23
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <cstdio>
#include <algorithm>
#define Nmax 1002
#define NRmax 102

using namespace std;
int n, m, Tmin, c;
bool Sol[Nmax], sw[Nmax];
struct room
{
    int T;
    int v[NRmax];
}Sw[Nmax];
void read()
{
    int i, j;
    freopen("aprindere.in" ,"r", stdin);
    freopen("aprindere.out", "w", stdout);
    scanf("%d %d", &n, &m);
    for(i = 0; i < n; ++ i)
        scanf("%d", &Sol[i]);
    for(i = 1; i <= m; ++ i)
    {
        scanf("%d", &c);
        sw[c] = 1;
        scanf("%d %d", &Sw[c].T, &Sw[c].v[0]);
        for(j = 1; j <= Sw[c].v[0]; ++ j)
            scanf("%d", &Sw[c].v[j]);
    }
}
void Switch(int x)
{
    if(Sol[x]) Sol[x] = 0;
    else Sol[x] = 1;
}
void solve()
{
    int i, j;
    for(i = 0; i < n; ++ i)
    {
        if(!Sol[i])
        {
            if(sw[i])
            {
                for(j = 1; j <= Sw[i].v[0]; ++ j)
                    Switch(Sw[i].v[j]);
                Tmin += Sw[i].T;
            }
        }
    }
}
void write()
{
    printf("%d\n", Tmin);
}
int main()
{
    read();
    solve();
    write();
    return 0;
}