Cod sursa(job #8875)

Utilizator crusRus Cristian crus Data 25 ianuarie 2007 21:41:12
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#define input "aprindere.in"
#define output "aprindere.out"
#define nmax 1001
int n,m,i,j,s[nmax],c,t,nr,timp[nmax],v[nmax][101];
long sol;
void read()
{
	FILE *fin;
	fin=fopen(input,"r");
	fscanf(fin,"%ld %ld",&n,&m);
	for (i=0;i<n;i++)
		fscanf(fin,"%ld",&s[i]);
	for (i=1;i<=m;i++)
		{
		fscanf(fin,"%ld %ld %ld",&c,&t,&nr);
		timp[c]=t;
		for (j=1;j<=nr;j++)
			fscanf(fin,"%ld",&v[c][j]);
		v[c][0]=nr;
		}	
	fclose(fin);
}

void write()
{
	FILE *fout;
	fout=fopen(output,"w");
	fprintf(fout,"%ld",sol);
	fclose(fout);
}
void change(int i)
{
	if (s[i]) s[i]=0;
	   else s[i]=1;
}
void solve()
{
	for (i=0;i<n;i++)
		if (!s[i])
			{
			 sol+=timp[i];
			 for (j=1;j<=v[i][0];j++)
				 change(v[i][j]);
			}
}
int main()
{
	read();
	solve();
	write();
	return 0;
}