Cod sursa(job #2965276)

Utilizator Cezar2009Cezar Mihai Titihazan Cezar2009 Data 14 ianuarie 2023 19:18:33
Problema Aprindere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.66 kb
//https://infoarena.ro/problema/aprindere
#include <bits/stdc++.h>
using namespace std;

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

#pragma pack(1)
struct camera
{
    short int c;
    short int t;
    int nr;
    int nrc[1010];
}c[1010];
bool comparare(struct camera a,struct camera b)
{
    if(a.c<b.c)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
int main()
{
    int i,j,n,m,tt=0,loc;
    bool b;
    bitset <1010> bit;
    fin>>n>>m;
    for(i=0;i<n;i++)
    {
       fin>>b;
       //cout<<b;
       bit[i]=b;
    }
    for(i=1;i<n;i++)
    {
        c[i].c=i;
    }
    for(i=0;i<m;i++)
    {
        fin>>loc;
        fin>>c[loc].t>>c[loc].nr;
        //cout<<c[loc].c<<" "<<c[loc].t<<" "<<c[loc].nr<<"\n";
        for(j=0;j<c[loc].nr;j++)
        {
            fin>>c[loc].nrc[j];
        }
    }
    sort(c,c+m,comparare);
//    for(i=0;i<n;i++)
//    {
//        //cout<<bit[i];
//    }

    for(i=0;i<n;i++)
    {
        //cout<<c[i].c<<" "<<c[i].t<<" "<<c[i].nr<<"   ";
        //cout<<i<<" ";
        if(bit[i]==0)
        {
            tt=tt+c[i].t;
            //cout<<i<<" "<<c[i].nr<<"   ";
            for(j=0;j<c[i].nr;j++)
            {
                //cout<<c[i].nrc[j]<<" "<<bit[c[i].nrc[j]]<<" ";
                if(bit[c[i].nrc[j]]==1)
                {
                    bit[c[i].nrc[j]]=0;
                }
                else
                {
                    bit[c[i].nrc[j]]=1;
                }
                //cout<<bit[c[i].nrc[j]]<<"   ";
            }
        }
        //cout<<"\n";
    }
    fout<<tt;
	return 0;
}