Cod sursa(job #1890209)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 23 februarie 2017 10:08:42
Problema Elementul majoritar Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>

#define MAX_N 1000000

int maj[MAX_N];

int main(void) {
  int n, nr, cand;

  FILE *f = fopen("elmaj.in", "r");
  fscanf(f, "%d", &n);
  for (int i = 0; i < n; ++i) {
    fscanf(f, "%d", maj + i);
  }
  fclose(f);
  cand = maj[0];
  nr = 1;
  for (int i = 0; i < n; ++i) {
    if (cand == maj[i]) {
      nr++;
    } else {
      nr--;
    }
    if (nr < 0) {
      nr = 1;
      cand = maj[i];
    }
  }
  nr = 0;
  for (int i = 0; i < n; ++i) {
    if (cand == maj[i]) {
      nr++;
    }
  }
  f = fopen("elmaj.out", "w");
  if (nr > n / 2) {
    fprintf(f, "%d %d\n", cand, nr);
  } else {
    fprintf(f, "-1\n");
  }
  fclose(f);

  return 0;
}