Pagini recente » Cod sursa (job #2173054) | Cod sursa (job #3216570) | Cod sursa (job #1188807) | Cod sursa (job #1191432) | Cod sursa (job #1129847)
#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;
}