Cod sursa(job #2494007)

Utilizator alexnigaNiga Alexandru alexniga Data 17 noiembrie 2019 11:16:02
Problema Aprindere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

struct room
{
    int roomNum;
    int neededTime;
    int howManyRoomsChange;
    vector <int> whatRoomIsChange;

}rooms[1001];

int viz[1001];

int main()
{
    int n, m;

    f >> n >> m;

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

    for (int i = 0; i < m ; i++)
    {
        f >> rooms[i].roomNum >> rooms[i].neededTime >> rooms[i].howManyRoomsChange;

        for (int j = 0; j < rooms[i].howManyRoomsChange; j++)
        {
            int localRoomLight;
            f >> localRoomLight;
            rooms[i].whatRoomIsChange.push_back(localRoomLight);
        }
    }

    int totalTime = 0;

    for (int i = 0; i < m; i++)
    {
         //cout << viz[rooms[i].roomNum] << "\n";
         //cout << rooms[i].roomNum << "\n";
        if (viz[rooms[i].roomNum] == 0)
        {
            //cout << rooms[i].roomNum << "\n";
            totalTime += rooms[i].neededTime;
            for (int j = 0; j < rooms[i].howManyRoomsChange; j++)
            {
                if (viz[rooms[i].whatRoomIsChange[j]] == 0)
                    viz[rooms[i].whatRoomIsChange[j]] = 1;
                else
                    viz[rooms[i].whatRoomIsChange[j]] = 0;
            }
        }
    }

    g << totalTime;
    return 0;
}