Cod sursa(job #7199)

Utilizator kaesarioDumi Loghin kaesario Data 21 ianuarie 2007 13:04:08
Problema Aprindere Scor 45
Compilator c Status done
Runda preONI 2007, Runda 1, Clasa a 9-a si gimnaziu Marime 1.04 kb
#include <stdio.h>
#define MAX 700
int main()
{
 	FILE *f=fopen("aprindere.in", "rt");
 	int n, i, j, k, m, tmax, tt, tc, c[MAX], t[MAX], a[MAX], p[MAX][MAX];
 	
 	fscanf(f, "%i %i", &n, &m);
 	for (i=0; i<n; i++) fscanf(f, "%i", &a[i]);
 	for (i=0; i<m; i++)
 	{
	 	fscanf(f, "%i %i %i", &c[i], &t[i], &p[i][0]);
	 	for (j=1; j<=p[i][0]; j++) 
		 {
		  		  fscanf(f, "%i", &p[i][j]); 
	     }
	}
	for (j=0; j<n; j++) printf("%i ", a[j]);
		   printf("\n");
	fclose(f);
	i=0;
	tc=0;
	tmax=0;
	while(i<n)
	{
      while(a[i]==1) i++;
      if (i<n)
       if (a[i]==0)
       {
        j=tc+1;
      	tt=1001;
      	while (j<m)
      	{
   	      if (c[j]<=i)
	      for (k=1; k<=p[j][0]; k++)
		   if (p[j][k]==i)
		  	 if (tt>t[j]) { tt=t[j]; tc=j; }
   		  j++;
         }
	  	 for (j=1; j<=p[tc][0]; j++) 
 	 	  if (a[p[tc][j]]==1) a[p[tc][j]]=0; else a[p[tc][j]]=1;
	  	 	tmax+=t[tc];
	     i++;
	   }   
    }
    
    f=fopen("aprindere.out", "wt");
    fprintf(f, "%i\n", tmax);
    fclose(f);
    return 0;
}