Cod sursa(job #935130)

Utilizator catalinutzbCraciun Catalin catalinutzb Data 1 aprilie 2013 19:41:49
Problema Aprindere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
/// Craciun Catalin (c)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("aprindere.in");
ofstream g("aprindere.out");

int n,m;
long long timp;
int A[1001];
int C[1001][111];

void afisare(){

    g<<timp<<"\n";
    g.close();
}

void parcurgere(){

    int i,j;
    int x;
    bool fini;
    int pointer;

    timp=0;
    fini=0;
    for (i=1;(i<=m)&&(!fini);i++){
        fini=1;
        for (j=1;(j<=n)&&(fini);j++)
            if (A[j]==0)
                fini=0;
        if (!fini){
            timp+=C[i][2];
            for (j=1;j<=C[i][3];j++){
                x=C[i][j+3];
                if (A[x]==0)
                    A[x]=1;
                else
                    A[x]=0;
            }
        }
        else
            break;
    }
}

void sortare(){

    int i,j,k;
    int aux;

    for (i=1;i<=m;i++){
        for (j=i+1;j<=m;j++){
            if (C[i][2]>C[j][2]){
                for (k=1;k<=110;k++){
                    aux=C[i][k];
                    C[i][k]=C[j][k];
                    C[j][k]=aux;
                }
            }
        }
    }


}

void citire(){

    int i,j;

    f>>n>>m;
    for (int i=1;i<=n;i++)
        f>>A[i];
    for (i=1;i<=m;i++){
        f>>C[i][1]>>C[i][2]>>C[i][3];
        for (j=1;j<=C[i][3];j++){
            f>>C[i][j+3];
            C[i][j+3]++;
        }
    }
    f.close();
}

int main(){

    citire();
    sortare();
    parcurgere();
    afisare();

    return 0;
}