Cod sursa(job #25514)

Utilizator anamaria1Ozorchevici Ana Maria anamaria1 Data 4 martie 2007 12:47:40
Problema Balanta Scor 90
Compilator cpp Status done
Runda preONI 2007, Runda 3, Clasa a 10-a Marime 1.61 kb
#include<fstream.h>
struct balanta
 {int ok,cmp;
 };
balanta v[1025];
int n,m,nr,a[513],b[513],min,max,minv,maxv,okmx,okmn;
int main()
{ifstream f("balanta.in");
ofstream g("balanta.out");
int c,i,j,val,k,ok1,l;
f>>n>>m;nr=n;
for(i=1;i<=m;i++)
 {f>>k;
  for(j=1;j<=k;j++) f>>a[j];
  for(j=1;j<=k;j++) f>>b[j];
  f>>val;
  if(!val) for(j=1;j<=k;j++)
	    {if(!v[a[j]].ok) v[a[j]].ok=1;
	     if(!v[b[j]].ok) v[b[j]].ok=1;
	    }
    else if(val==1)
	   {for(j=1;j<=n;j++)
	     {ok1=1;
	      for(l=1;l<=k;l++)
		if((j==a[l])||(j==b[l])) {ok1=0;break;}
	      if(ok1) v[j].ok=1;
		else if(!v[j].ok)
		 {if(j==a[l])
		   {v[j].cmp++;
		    if(v[j].cmp>max) {max=v[j].cmp;maxv=j;okmx=1;}
		     else if(v[j].cmp==max) okmx=0;
		   }
		   else
		    {v[j].cmp--;
		     if(v[j].cmp<min) {min=v[j].cmp;minv=j;okmn=1;}
		       else if(v[j].cmp==min) okmn=0;
		    }
		 }
	     }
	   }
	   else
	    {for(j=1;j<=n;j++)
	       {ok1=1;
		for(l=1;l<=k;l++)
		 if((j==a[l])||(j==b[l])) {ok1=0;break;}
		if(ok1) v[j].ok=1;
		  else if(!v[j].ok)
		    {if(j==a[l])
		      {v[j].cmp--;
		       if(v[j].cmp<min) {min=v[j].cmp;minv=j;okmn=1;}
			 else if(v[j].cmp==min) okmn=0;
		      }
		      else
		       {v[j].cmp++;
			if(v[j].cmp>max) {max=v[j].cmp;maxv=j;okmx=1;}
			  else if(v[j].cmp==max) okmx=0;
		       }
		     }
	       }
	    }
 }
f.close();
if(okmx)
 {if(!okmn) g<<maxv<<'\n';
   else {if(max>(-min)) g<<maxv<<'\n';
	  else if(max<(-min)) g<<minv<<'\n';
		else g<<0<<'\n';
       }
 }
 else {if(okmn) g<<minv<<'\n';
	else g<<0<<'\n';
      }
g.close();
return 0;
}