Cod sursa(job #1313644)

Utilizator hrazvanHarsan Razvan hrazvan Data 10 ianuarie 2015 22:16:02
Problema Balanta Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.45 kb
#include <stdio.h>
#define MAXN 1024
char mma[MAXN], mmi[MAXN], a[MAXN], b[MAXN];

int main(){
  FILE *in = fopen("balanta.in", "r");
  int n, m, i, j, k, x;
  fscanf(in, "%d%d", &n, &m);
  for(i = 0; i < m; i++){
    fscanf(in, "%d", &k);
    for(j = 0; j < n; j++)
      a[j] = b[j] = 0;
    for(j = 0; j < k; j++){
      fscanf(in, "%d", &x);
      x--;
      a[x] = 1;
    }
    for(j = 0; j < k; j++){
      fscanf(in, "%d", &x);
      x--;
      b[x] = 1;
    }
    fscanf(in, "%d", &x);
    switch(x){
      case 0:
        for(j = 0; j < n; j++){
          if(a[j])
            mma[j] = mmi[j] = 1;
          if(b[j])
            mma[j] = mmi[j] = 1;
        }
        break;
      case 1:
        for(j = 0; j < n; j++){
          if(!a[j])
            mma[j] = 1;
          if(!b[j])
            mmi[j] = 1;
        }
        break;
      case 2:
        for(j = 0; j < n; j++){
          if(!a[j])
            mmi[j] = 1;
          if(!b[j])
            mma[j] = 1;
        }
        break;
    }
  }
  fclose(in);

  int a = 0, b = 0, rez = -1;
  for(i = 0; i < n; i++){
    if(!mmi[i]){
      a++;
      if(rez == -1)
        rez = i + 1;
    }
    if(!mma[i]){
      b++;
      if(rez == -1)
        rez = i + 1;
    }
  }
  FILE *out = fopen("balanta.out", "w");
  if((a == 1 && b == 0) || (a == 0 && b == 1))
    fprintf(out, "%d", rez);
  else
    fprintf(out, "0");
  fclose(out);
  return 0;
}