Cod sursa(job #3205253)

Utilizator ultra980Alex Stan ultra980 Data 19 februarie 2024 09:46:22
Problema Elementul majoritar Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <stdio.h>
#include <ctype.h>

#define NMAX 1000000
int v[ NMAX ];

int readInt( FILE *fin ) {
  int ret_nr;
  char ch;

  while ( isspace( ch = fgetc( fin ) ) );
  ret_nr = 0;
  do
    ret_nr = ret_nr * 10 + ch - '0';
  while ( isdigit( ch = fgetc( fin ) ) );

  return ret_nr;  
}

int main() {
  FILE *fin, *fout;
  int n, i, cand, cnt;

  fin = fopen( "elmaj.in", "r" );
  n = readInt( fin );
  cand = -1;
  cnt = 0;
  for ( i = 0; i < n; i++ ) {
    v[ i ] = readInt( fin );
    if ( cnt == 0 ) {
      cand = v[ i ];
      cnt = 1;
    } else {
      cnt += 1 - 2 * (v[ i ] != cand);
    }
  }
  fclose( fin );

  cnt = 0;
  for ( i = 0; i < n; i++ ) {
    if ( v[ i ] == cand )
      cnt++;
  }

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

  return 0;
}