#include <stdio.h>
#include <stdlib.h>
// #define MY_FILE "test.txt"
#define MY_FILE "c122-875.c.in"

int sum1(),
    sum1x(),
    gyo, retu,
    i,
    j,
    c,
    a,
    b,
    *matrix,
    candidates,
    kae();

void pp(int *a, int n)
{
  while (n--) {
    printf("%d ", *a++);
    if (n % retu == 0)
      putchar('\n');
  }
  printf("\n\n");
}

int main()
{
  FILE *fp;

  fp = fopen(MY_FILE, "r");

  fscanf(fp, "%*[^=]=%d", &retu);
  fscanf(fp, "%*[^=]=%d", &gyo);
  candidates = retu;

  printf("CANDIDATES=%d,VOTES=%d\n", retu, gyo);

  matrix = (int *)malloc(sizeof(int) * gyo * retu);
  if (matrix == NULL) exit(1);

  {
    int *p = matrix,
         i = gyo * retu;

    while (i--) {
      fscanf(fp, "%d", p);
      printf("%d ", *p);
      ++p;
      if (i % retu == 0)
        putchar('\n');
    }
  }
  sum1();
  fclose(fp);
  free(matrix);

  return 0;
}

//--------------------------集計-----------------------
int sum1()
{
  int i,
      mini,
      subTotal[retu + 1];

  while (1) {
    // pp(matrix, gyo * retu);
    // subTotal calc
    for (i = 0; i <= retu; ++i)
      subTotal[i] = 0;
    for (i = 0; i < gyo * retu; i += retu)
      subTotal[matrix[i]]++;

    for (i = 1; i <= retu; ++i) {
      // printf("sub %d %d %d %d %d\n", i, subTotal[i], gyo, retu, candidates);
      if (subTotal[i] > gyo / 2 ) { /* majority found */
        printf("------当選者-----\nCANDIDATE%d\n", i );
        return 0;
      }
    }
    // find minimum
    mini = 1;
    for (i = 2; i <= retu; ++i)
      if (subTotal[i] < subTotal[mini])
        mini = i;
    printf("最少候補番号 = %d\n", mini);
    // delete minimum and compress matrix
    {
      int *p1,
          *p2;
      p1 = p2 = matrix;
      for ( i = gyo * retu; i; --i) {
        *p1 = *p2;
        if (*p2 != mini)
          ++p1;
        ++p2;
      }
    }
    --retu;
  }

  return 0 ;
}
