Pagini recente » Cod sursa (job #2917775) | Cod sursa (job #153530) | Cod sursa (job #2781464) | Cod sursa (job #2195840) | Cod sursa (job #203525)
Cod sursa(job #203525)
#include <cstdio>
#include <vector>
#include <algorithm>
int const NMAX = 1001;
typedef struct camera {
bool stare; //0=stins, 1=aprins
int timp;
int schimblen;
camera* schimba[NMAX];
};
camera cam[NMAX];
int N, Trasp;
void citire()
{
int M, C, Tc, NRc, i, j, st, ind;
FILE *f1;
f1 = fopen("aprindere.in", "r");
fscanf(f1, "%d %d\n", &N, &M);
//cam = new camera [N];
for (i = 0; i != N; ++i) {
fscanf(f1, "%d", &st);
cam[i].stare = st;
}
for (i = 0; i != M; ++i) {
fscanf(f1, "%d %d %d", &C, &Tc, &NRc);
cam[C].timp = Tc;
for (j = 0; j != NRc; ++j) {
fscanf(f1, "%d", &ind);
cam[C].schimba[cam[C].schimblen++]=&cam[ind];
}
}
fclose(f1);
}
void rezolvare()
{
for (int i = 0; i != N; ++i) {
if (!cam[i].stare) {
Trasp += cam[i].timp;
cam[i].stare = 1;
int aux = cam[i].schimblen;
for (int j = 0; j != aux; ++j)
cam[i].schimba[j] -> stare = !cam[i].schimba[j] -> stare;
}
}
}
void afisare()
{
FILE *f;
f = fopen("aprindere.out", "w");
fprintf(f, "%d\n", Trasp);
fclose(f);
}
int main()
{
citire();
rezolvare();
afisare();
return 0;
}