Pagini recente » Cod sursa (job #1383177) | Cod sursa (job #1099450) | Cod sursa (job #2407685) | Cod sursa (job #1321155) | Cod sursa (job #203459)
Cod sursa(job #203459)
#include <cstdio>
#include <vector>
#include <algorithm>
typedef struct camera {
bool stare; //0=stins, 1=aprins
int timp;
std::vector<camera*> schimba;
};
camera *cam;
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.push_back(&cam[ind]);
}
}
fclose(f1);
}
void comuta(camera *x)
{
x->stare = !x->stare;
}
void rezolvare()
{
for (int i = 0; i != N; ++i) {
if (!cam[i].stare) {
Trasp += cam[i].timp;
comuta(&cam[i]);
std::for_each(cam[i].schimba.begin(), cam[i].schimba.end(), comuta);
}
}
}
void afisare()
{
FILE *f;
f = fopen("aprindere.out", "w");
fprintf(f, "%d\n", Trasp);
fclose(f);
}
int main()
{
citire();
rezolvare();
afisare();
return 0;
}