Cod sursa(job #2214811)

Utilizator teodortatomirTeodor Tatomir teodortatomir Data 20 iunie 2018 10:21:21
Problema Elementul majoritar Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.58 kb
#include <stdio.h>
#include <stdlib.h>

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