Cod sursa(job #148669)

Utilizator mariussMarius Telespan mariuss Data 4 martie 2008 18:01:06
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.78 kb
#include<stdio.h>
#define nmax 1034
int i,j,n,m,k,sol[4],x,v[nmax][nmax],nr[nmax],bal[nmax];
int main()
{
    int p,sol,a=0,b=0,fals=0,greutate=0;
    
    freopen("balanta.in","r",stdin);
    freopen("balanta.out","w",stdout);
    
    scanf("%d %d",&n,&m);
    
    for(i=1;i<=m;i++)
    {
        scanf("%d",&nr[i]);
        for(j=1;j<=nr[i]*2;j++)
            scanf("%d",&v[i][j]);
        scanf("%d",&bal[i]);
    }
    
        
    for(i=1;i<=n&&x<2;i++)
    {
        
        fals=0;
        greutate=0;
        
        for(j=1;j<=m;j++)
		{
			a=0;
            b=0;
            
            for(p=1;p<=nr[j];p++)
            {
                if(v[j][p]==i)
                    a++;
            }
            
            for(p=nr[j]+1;p<=nr[j]*2;p++)
            {
                if(v[j][p]==i)
                    b++;
            }
            
            
            if(a==0 && b==0 && bal[j]!=0)
                break;
            
			if(a>b)
            {
                if(greutate==0)
                {
                    if(bal[j]==1)
                        greutate=1;
                    else
                        greutate=-1;
                }
                else
				{
					if(greutate==1&&bal[j]!=1)
						fals=1;
					if(greutate==-1&&bal[j]!=2)
						fals=1;
				}
			}
			if(b>a)
			{
				if(greutate==0)
				{
					if(bal[j]==2)
						greutate=1;
					else
						greutate=-1;
				}
				else
					if(greutate==1&&bal[j]!=2)
						fals=1;
					if(greutate==-1&&bal[j]!=1)
						fals=1;
			}
			if(fals)
            	break;

			if(j==m && !fals)
			{
				x++;
				sol=i;
			}


		}
    }
    
    if(x<2)
        printf("%d",sol);
    else
        printf("0");
 

    return 0;

}