Cod sursa(job #2491647)

Utilizator stan_flaviusStan Flavius Stefan stan_flavius Data 12 noiembrie 2019 21:47:28
Problema Aprindere Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <fstream>
#include <algorithm>
#define nmax 1001

using namespace std;
ifstream fin("aprindere.in");
ofstream fout("aprindere.out");

int nr_camere, nr_intrerupatoare;
int vec_camere[nmax];

struct intrerupator
{
    int cam;
    int timp;
    int nr_cam_modif;
    int cam_modif[nmax];
};

intrerupator vec[nmax];

bool cmp(intrerupator A, intrerupator B)
{
    return A.timp<B.timp;
}

bool verif()
{
    for(int i=1; i<=nr_camere; i++)
        if(vec_camere[i]!=1) return 0;
    return 1;
}

int main()
{
    fin>>nr_camere>>nr_intrerupatoare;
    for(int i=1; i<=nr_camere; i++)
        fin>>vec_camere[i];
    for(int i=1; i<=nr_intrerupatoare; i++)
        {
            int y;
            fin>>y;
            vec[i].cam=y;
            fin>>vec[i].timp>>vec[i].nr_cam_modif;
            for(int j=1; j<=vec[i].nr_cam_modif; j++)
                {
                    int x;
                    fin>>x;
                    vec[i].cam_modif[j]=x+1;
                }
        }

    sort(vec+1,vec+nr_intrerupatoare+1,cmp);

    int tot_timp=0;
    for(int i=1; i<=nr_intrerupatoare; i++)
        {
            if(verif()==1) {fout<<tot_timp; return 0;}
            tot_timp+=vec[i].timp;
            for(int j=1; j<=vec[i].nr_cam_modif; j++)
                vec_camere[vec[i].cam_modif[j]]=1-vec_camere[vec[i].cam_modif[j]];
        }

    if(verif()==1) {fout<<tot_timp; return 0;}
    return 0;
}