Cod sursa(job #29590)

Utilizator alecmanAchim Ioan Alexandru alecman Data 9 martie 2007 17:07:28
Problema Balanta Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 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,temp[1025],cod;
  fscanf(fin, "%d", &x);
  for(int i=1;i<=2*x;++i)
    fscanf(fin, "%d", &temp[i]);
  fscanf(fin, "%d", &cod);
  if(cod==0)
    for(int i=1;i<=2*x;++i)
    {
      a[temp[i]]=1;
      b[temp[i]]=1;
    }
  else
  if(cod==1)
    for(int i=x+1;i<=2*x;++i)
    {
      a[temp[i]]=1;
      b[temp[i-x]]=1;
    }
  else
    for(int i=1;i<=x;++i)
    {
      a[temp[i]]=1;
      b[temp[i+x]]=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");
}