Cod sursa(job #1091961)

Utilizator vlad96Vlad Zuga vlad96 Data 26 ianuarie 2014 13:14:04
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <stdio.h>

using namespace std;

int n, cand = -1, v[1000005], k;

void read ()
{
    FILE *fis = fopen ("elmaj.in", "r");
    fscanf(fis, "%d", &n);
    for (int i = 1; i <= n; i ++ )
    {
        fscanf(fis, "%d", &v[i]);
        if ( k == 0 )
        {
            cand = v[i];
            k = 1;
        }
        else if ( v[i] == cand )
            k ++;
        else k --;
    }
    fclose(fis);
}

void write_verif()
{
    FILE *fis2 = fopen ("elmaj.out", "w");
    int ok = 0;
    int nr = 0;
    if ( cand < 0 )
    {
        ok = 1;
        goto x;
    }
    for (int i = 1; i <= n; i ++ )
        if ( v[i] == cand )
            nr ++;
    if ( nr < n/2+1 )
        ok = 1, cand = -1;
    x:fprintf(fis2, "%d ", cand);
    if ( ok == 0 )
        fprintf(fis2, "%d\n", nr);
    fclose(fis2);
}

int main()
{
    read();
    write_verif();
    return 0;
}