Cod sursa(job #655868)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 3 ianuarie 2012 16:06:36
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <algorithm>
using namespace std;

int n, m, v[1010];
struct stu {int C, T, a[1010];} a[1010];

inline bool cmp(stu a, stu b)
{
    return a.C < b.C;
}

int main()
{
    ifstream f("aprindere.in");
    ofstream g("aprindere.out");

    f >> n >> m;
    for (int i = 1; i <= n; ++i)
        f >> v[i];

    for (int i = 1; i <= m; ++i)
    {
        f >> a[i].C >> a[i].T >> a[i].a[0];
        ++a[i].C;
        for (int j = 1; j <= a[i].a[0]; ++j)
        {
            f >> a[i].a[j];
            ++a[i].a[j];
        }
    }
    sort(a + 1, a + m + 1, cmp);

    int sol = 0;
    for (int i = 1; i <= m; ++i)
        if (!v[a[i].C])
        {
            sol += a[i].T;
            for (int j = 1; j <= a[i].a[0]; ++j)
                v[a[i].a[j]] = !v[a[i].a[j]];
        }

    g << sol << '\n';
    g.close();
    return 0;
}