Cod sursa(job #1266904)

Utilizator cella.florescuCella Florescu cella.florescu Data 19 noiembrie 2014 11:45:11
Problema Elementul majoritar Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>
#include <stdlib.h>
int v[1000000];
int main() {
  FILE *fin, *fout;
  int n, i, nr, major;
  fin=fopen("elmaj.in", "r");
  fscanf(fin, "%d", &n);
  for(i=0; i<n; i++)
    fscanf(fin, "%d", &v[i]);
  fclose(fin);
  major=v[0]; nr=1;
  for(i=1; i<n; i++)
    if(v[i]==major)
      ++nr;
    else {
      --nr;
      if(nr<0){
        major=v[i];
        nr=1;
      }
    }
  nr=0;
  for(i=0; i<n; i++)
    if(v[i]==major)
      nr++;
  fout=fopen("elmaj.out", "w");
  if(nr>n/2)
    fprintf(fout, "%d %d\n", major, nr);
  else
    fprintf(fout, "-1\n");
  fclose(fout);
}