Cod sursa(job #91529)

Utilizator alex_dincaDinca Alexandru-Nicolae - UPB alex_dinca Data 12 octombrie 2007 18:34:50
Problema Aprindere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream.h>
#include<stdlib.h>
#include<math.h>

int *y[1000], v[1000], t[1000], x[1000];
long int n,m,i,j,p1,p2,p,s;

void citire(){
ifstream fin("aprindere.in");
fin>>n>>m;
for(i=0;i<n;i++){
   y[i]=(int*)realloc(y[i],sizeof(int));
   y[i][0]=0;
   }
for(i=0;i<n;i++) fin>>v[i];
for(i=0;i<m;i++) {
   fin>>p1;fin>>t[p1]>>p2;
   x[p1]=1;
   y[p1][0]=0;
   for(j=0;j<p2;j++){
      y[p1][0]++;
      fin>>p;
      y[p1]=(int*)realloc(y[p1],(y[p1][0]+1)*sizeof(int));
      y[p1][y[p1][0]]=p;
      }
   }
fin.close();
}

long int determina(){
s=0;
for(i=0;i<n;i++)
   if(!v[i]&&x[i]){
     for(j=1;j<=y[i][0];){
	v[y[i][j]]=abs(v[y[i][j]]-1);
	j++;
	}
     s+=t[i];
     }
return s;
}

int main(){
citire();
ofstream fout("aprindere.out");
fout<<determina()<<"\n";
fout.close();
return 0;
}