Pagini recente » Cod sursa (job #221847) | Cod sursa (job #2094375) | Cod sursa (job #2347668) | Cod sursa (job #3002983) | Cod sursa (job #2491647)
#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;
}