Cod sursa(job #1365143)

Utilizator RazzinnatorRazvan Brinzea Razzinnator Data 28 februarie 2015 08:50:02
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <stdio.h>

using namespace std;

int v[1000001];

FILE *f = fopen( "elmaj.in", "r" );
FILE *g = fopen( "elmaj.out", "w" );

int main()
{
    int n;
    fscanf( f, "%d", &n );
    for( int i = 0; i < n; i++ )
    {
        fscanf( f, "%d", &v[i] );
    }

    // determinarea elementului
    int elmaj = -1, k = 0;
    for( int i = 0; i < n; i++ )
    {
        if( k == 0 )
        {
            elmaj = v[i];
            k++;
        }
        else if ( v[i] == elmaj )
        {
            k++;
        }
        else
        {
            k--;
        }
    }

    // verificare
    k = 0;
    for( int i = 0; i < n; i++ )
    {
        if( v[i] == elmaj )
        {
            k++;
        }
    }

    if( k >= n/2+1 )
    {
        fprintf( g, "%d %d\n", elmaj, k );
    }
    else
    {
        fprintf( g, "-1\n" );
    }

    return 0;
}