Cod sursa(job #1083147)

Utilizator vyrtusRadu Criuleni vyrtus Data 15 ianuarie 2014 17:44:53
Problema Aprindere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int aprinse[1000], n, m ,t = 0;
int a[1000][1001];

int main()
{
  f >> n >> m;
    for (int i=0;i<n;i++)
         f >> aprinse[i];

    for (int i=0;i<m;i++)
    {
       f >> a[i][1]  >> a[i][2] >> a[i][3];
        for (int j=4;j<=a[i][3]+3;j++)
            f >> a[i][j];
    }
    bool ok;
   do
   {
    int k;
  ok = false;
  for (int i=0;i < m;i++)
    if (a[i][2] < a[i+1][2])
    {
        int temp = max(a[i][3],a[i+1][3]);
      for (int j=1;j<=temp+3;j++)
      {
          k = a[i][j];
          a[i][j] = a[i+1][j];
          a[i+1][j] = k;
      }
      ok = true;
   }
   }
    while (!ok);

    for (int i=m-1;i>=0;i--)
    {
        ok =false;
         if (!aprinse[a[i][4]]) ok =true;

        if (ok)
        {
             for (int j=4;j<=a[i][3]+3;j++)
                aprinse[a[i][j]] = !aprinse[a[i][j]];

             t += a[i][2];
        }

    }
   g << t << endl;

    return 0;
}