Cod sursa(job #2489807)

Utilizator mihaicivMihai Vlad mihaiciv Data 9 noiembrie 2019 12:00:30
Problema Aprindere Scor 0
Compilator cpp-64 Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <algorithm>

#define NMAX 10000
using namespace std;

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

int n, m;
int open[NMAX];

struct Camera {
    int c, t, nr;
    vector<int> camere_vecine;
}camera[NMAX];

bool cmp_camere(Camera c1, Camera c2) {
    return (c1.c < c2.c ? true: false);
}

int main() {

    f >> n >> m;
    for (int i = 0; i < n; ++i) {
        f >> open[i];
    }

    for (int i = 0; i < m; ++i) {
        f >> camera[i].c >> camera[i].t >> camera[i].nr;
        for (int j = 0; j < camera[i].nr; ++j) {
            int x;
            f >> x;
            camera[i].camere_vecine.push_back(x);
        }
    }

    sort(camera, camera + m, cmp_camere);

    int timp_total = 0;

    for (int i = 0; i < n; ++i) {
        int pos = camera[i].c;
        if (open[pos] == 0) {
            timp_total += camera[i].t;
            for (int j = 0; j < camera[i].nr; ++j) {
                int camera_vecina = camera[i].camere_vecine[j];
                open[camera_vecina] = 1 - open[camera_vecina];
            }
        }
    }

    g << timp_total;

    return 0;
}