Cod sursa(job #1129847)

Utilizator horiainfoTurcuman Horia horiainfo Data 28 februarie 2014 09:51:38
Problema Aprindere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>

using namespace std;
ifstream fin("aprindere.in");
ofstream fout("aprindere.out");
int k,poz,s,smax,i,j,t[1001],nrc[1001],n,p,m,c,b;
int a[1001][1001],v[1001];
int ver(int l)
{
    int x=0,y=0;
    for(int i=0;i<n;i++)
        if(a[l][i]==1)
            if(v[i]==0) x++;
            else y++;
    if(x-y>s) return x-y;
    return 0;
}
int main()
{
    fin>>n>>m;
    for(i=0;i<n;i++)
    {
        fin>>v[i];
        if(v[i]==0) p++;
    }
    for(i=1;i<=m;i++)
    {
        fin>>c;
        fin>>t[c]>>nrc[c];
        for(j=0;j<nrc[c];j++)
        {
            fin>>b;
            a[c][b]=1;
        }
    }
    while(p!=0)
    {
        poz=0; s=-1001;
        for(i=0;i<n;i++)
        {
            if(nrc[i]>0 && (k=ver(i))!=0) s=k,poz=i;
        }
        for(i=0;i<n;i++)
            if(a[poz][i]==1)
            {
                if(v[i]==1) p++,v[i]=0;
                else p--,v[i]=1;
            }
        smax+=t[poz];
    }
    fout<<smax;
    return 0;
}