Cod sursa(job #94712)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 24 octombrie 2007 22:12:29
Problema Balanta Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.6 kb
#include<fstream.h>
int N,M,st[1500],dr[1500],k,usor[1500],r,greu[1500],nr,poz,nr1,poz1;
int main(){
ifstream fin("balanta.in");
ofstream fout("balanta.out");
fin>>N>>M;
for (int i=0;i<M;i++){
    fin>>k;
    for (int j=0;j<k;j++)
       fin>>st[j];
    for (int l=0;l<k;l++)
	fin>>dr[l];      //1=egal
    fin>>r;              //2=usor
    if (r==0)            //3=greu
       for (int e=0;e<k;e++){
	   usor[st[e]]=1;
	   greu[st[e]]=1;
	   usor[dr[e]]=1;
	   greu[dr[e]]=1;
    }
    else
      if (r==1){
	  for (int t=0;t<k;t++){
	  if (greu[dr[t]]!=1)
	    if (greu[dr[t]]==3)
	       greu[dr[t]]=1;
	    else
	       greu[dr[t]]=2;

	    if (usor[st[t]]!=1)
	       if (usor[st[t]]==2)
		  usor[st[t]]=1;
	     usor[st[t]]=3;}}
      else
	for (int w=0;w<k;w++){
	  if (greu[st[w]]!=1)
	     if (greu[st[w]]==2)
		greu[st[w]]=1;
	     else
		greu[st[w]]=3;

	  if (usor[dr[w]]!=1)
	     if (usor[dr[w]]==3)
		usor[dr[w]]=1;
	     else
		usor[dr[w]]=2;}
     }
int us1=0,pus1=0,gr1=0,pgr=0;
for (int r=0;r<N;r++)
   if (greu[r]==2){
      us1++;
      pus1=r+1;
      }
   else
     if (greu[r]==3){
     gr1++;
     pgr=r+1;
     }
if (us1==1&&gr1==0)
   fout<<pus1;
else
   if (us1==0&&gr1==1)
      fout<<pgr;
   else{
    us1=0;
    gr1=0;
    for (int i=0;i<N;i++)
      if (usor[i]==2){
	 us1++;
	 pus1=i+1;}
      else
	if (usor[i]==3){
	   gr1++;
	   pgr=i+1;
	}
      if (us1==1&&gr1==0)
	 fout<<pus1;
      else
	 if (us1==0&&gr1==1)
	    fout<<pgr;
	 else
	   fout<<"0\n";
   }
fout<<"\n";
fin.close();
fout.close();
return 0;
}