Cod sursa(job #1453739)

Utilizator andrei_r_97Radoi Andrei andrei_r_97 Data 24 iunie 2015 15:32:26
Problema Elementul majoritar Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>

#define MAX_NUM 1000000

int elmaj(int v[], int n)
{
  int maj = -1, k = 0, i;

  for (i = 0; i < n; i++) {
    if (k == 0) {
      maj = v[i];
      k = 1;
    }
    else if (v[i] == maj) {
      k++;
    }
    else {
      k--;
    }
  }

  return maj;
}

int main()
{
  FILE *in, *out;
  int element[MAX_NUM], n, i, contor, raspuns;

  in = fopen("elmaj.in","r");
  fscanf(in, "%d", &n);
  for (i = 0; i < n; i++) {
    fscanf(in, "%d", &element[i]);
  }
  fclose(in);

  raspuns = elmaj(element, n);

  for (i = 0; i < n; i++) {
    if (element[i] == raspuns) {
      contor++;
    }
  }

  out = fopen("elmaj.out", "w");
  if (contor > n / 2) {
    fprintf(out, "%d %d\n", raspuns, contor);
  }
  else {
    fprintf(out, "-1\n");
  }
  fclose(out);

  return 0;
}