Cod sursa(job #2282528)

Utilizator Andreea62389Andreea Tebrean Andreea62389 Data 13 noiembrie 2018 22:30:01
Problema Aprindere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("aprindere.in");
ofstream fout("aprindere.out");
bool v[1001];
int timp[1001];
int mat[1002][1002], ind[1002][1002];
int cond(int a, int b)
{
    return timp[a]<timp[b];
}
int main()
{
    int n, m, i, j, c, t, nr, in;
    fin >> n >> m;
    for(i=0; i<n; i++)
        fin >> v[i];
    for(i=1; i<=m; i++)
    {
        fin >> c >> t >> nr;
        timp[c]=t;
        for(j=1; j<=nr; j++)
        {
            fin >> in;
            mat[c][0]++;
            mat[c][mat[c][0]]=in;
            if(c>=in)
            {
                ind[in][0]++;
                ind[in][ind[in][0]]=c;
            }

        }
    }
    int MAX=0;
    for(i=0; i<n; i++)
    {
        sort(ind[i]+1, ind[i]+ind[i][0]+1, cond);
        if(v[i]==0)
        {
             MAX=MAX+timp[ind[i][1]];
            for(j=1; j<=mat[ind[i][1]][0]; j++)
            {
                if(v[mat[ind[i][1]][j]]==0)   v[mat[ind[i][1]][j]]=1;
                else v[mat[ind[i][1]][j]]=0;
            }
        }

//        for(j=1; j<=ind[i][0]; j++)
//            fout << ind[i][j] << " ";
//        fout << "\n";
    }
    fout << MAX;
    return 0;
}