Cod sursa(job #29598)

Utilizator alecmanAchim Ioan Alexandru alecman Data 9 martie 2007 17:26:39
Problema Balanta Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
/*
 *
 *
  info-arena 2.0 - Arhiva - Balanta
 *
 *
 */

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define INPUT "balanta.in"
#define OUTPUT "balanta.out"

FILE *fin=fopen(INPUT, "r"),*fout=fopen(OUTPUT, "w");

int n,m,a[1025],b[1025];

void citire();
void rezolva();
void verifica();

int main()
{
  citire();
  memset(a,0,sizeof(a));
  memset(b,0,sizeof(b));
  for(int i=1;i<=m;++i)
    rezolva();
  verifica();
  fclose(fin);
  fclose(fout);
  return 0;
}

void citire()
{
  fscanf(fin, "%d %d", &n, &m);
}

void rezolva()
{
  int x,cod,decod[1025],g;
  memset(decod,0,sizeof(decod));
  fscanf(fin, "%d", &x);
  for(int i=1;i<=2*x;++i)
  {
    fscanf(fin, "%d", &g);
    if(i<=x)
      decod[g]=1;
    else
      decod[g]=2;
  }
  fscanf(fin, "%d", &cod);
  if(cod==0)
  {
    for(int i=1;i<=n;++i)
      if(decod[i]!=0)
      {
        a[i]=0;
        b[i]=0;
      }
  }
  else
  if(cod==1)
  {
    for(int i=1;i<=n;++i)
    {
      if(decod[i]!=1)
        a[i]=1;
      if(decod[i]!=2)
        b[i]=1;
    }
  }
  else
    for(int i=1;i<=n;++i)
    {
      if(decod[i]!=2)
        a[i]=1;
      if(decod[i]!=1)
        b[i]=1;
    }
}

void verifica()
{
  int lunga=0,lungb=0,poz1=0,poz2=0;
  for(int i=1;i<=n;++i)
  {
    if(a[i]==0)
    {
      ++lunga;
      poz1=i;
    }
    if(b[i]==0)
    {
      ++lungb;
      poz2=i;
    }
  }
  if(lunga==1&&lungb==0)
    fprintf(fout, "%d\n", poz1);
  else
  if(lunga==0&&lungb==1)
    fprintf(fout, "%d\n", poz2);
  else
    fprintf(fout, "0\n");
}