Cod sursa(job #25456)

Utilizator sigridMaria Stanciu sigrid Data 4 martie 2007 12:39:14
Problema Balanta Scor 70
Compilator cpp Status done
Runda preONI 2007, Runda 3, Clasa a 10-a Marime 1.28 kb
#include<fstream.h>
ifstream f("balanta.in");
ofstream g("balanta.out");
struct bal
{int ok;
 int cmp;
};
bal a[1025];
int n,m,i,k,x,v[1025],kk,j,okmin,okmax,min,max,xmin,xmax;
int main()
{f>>n>>m;
 for(i=1;i<=m;i++)
  {f>>k;kk=2*k;
   for(j=1;j<=kk;j++)
    f>>v[j];
   f>>x;
   if(x==0)
    {for(j=1;j<=kk;j++)
      a[v[j]].ok=1;
    }
    else if(x==1)
	   {for(j=1;j<=k;j++) a[v[j]].cmp++;
	    for(j=k+1;j<=kk;j++) a[v[j]].cmp--;
	    for(j=1;j<=n;j++)
	     if(!a[v[j]].cmp) a[v[j]].ok=1;
	   }
     else {for(j=1;j<=k;j++) a[v[j]].cmp--;
	   for(j=k+1;j<=kk;j++) a[v[j]].cmp++;
	   for(j=1;j<=n;j++)
	    if(!a[v[j]].cmp) a[v[j]].ok=1;
	  }
  }
 f.close();
 for(i=1;i<=n;i++)
  {if(!a[i].ok)
    {if(a[i].cmp<min) {min=a[i].cmp;xmin=i;okmin=0;}
      else if(a[i].cmp==min) okmin=1;
     if(a[i].cmp>max) {max=a[i].cmp;xmax=i;okmin=0;}
      else if(a[i].cmp==max) okmax=1;
    }
  }
 if(okmin==1)
  {if(!okmax) {g<<xmax<<'\n';g.close();return 0;}
   else if(okmax==1) {g<<0<<'\n';g.close();return 0;}
  }
 else
   {if(okmax==1) {g<<xmin<<'\n';g.close();return 0;}
     else if(min==(0-max)) {g<<0<<'\n';g.close();return 0;}
	    else if(min<(0-max)) {g<<xmin<<'\n';g.close();return 0;}
		    else {g<<xmax<<'\n'; g.close();return 0;}
   }
return 0;
}