Cod sursa(job #1349820)

Utilizator bullseYeIacob Sergiu bullseYe Data 20 februarie 2015 15:11:28
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <cstdio>
#define DMAX 1000010
using namespace std;

int val[DMAX], n, sol, aparitii;

void citire();
void rez();
void afisare();

int main()
{
    citire();
    rez();
    afisare();
    return 0;
}

void citire()
{
    int i;
    FILE*fin=fopen ("elmaj.in", "r");
    fscanf (fin, "%d", &n);
    for (i=1; i<=n; ++i)
        fscanf (fin, "%d", &val[i]);
    fclose(fin);
    return;
}

void rez()
{
    int i, cand, k=0;
    for (i=1; i<=n; ++i)
    {
        if (!k)
        {
            cand=val[i]; k=1;
        }
            else
            if (val[i]==cand)
                ++k;
                else
                --k;
    }
    for (i=1; i<=n; ++i)
        aparitii+=(val[i]==cand);
    if (aparitii>=n/2+1)
        sol=cand;
        else
        sol=-1;
    return;
}

void afisare()
{
    FILE*fout=fopen ("elmaj.out", "w");
    fprintf (fout, "%d %d\n", sol, aparitii);
    fclose(fout);
    return;
}