Cod sursa(job #1100608)

Utilizator alexandrutarcanTarcan Alexandru alexandrutarcan Data 7 februarie 2014 09:19:07
Problema Elementul majoritar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>
using namespace std;
long long v[1000001],n,i,x,maj,nrmaj;
int main()
{
    FILE *fin,*fout;
    fin=fopen("elmaj.in","r");
    fout=fopen("elmaj.out","w");
    fscanf(fin,"%d",&n);
    for(i=1;i<=n;i++)
        fscanf(fin,"%d",&v[i]);
    maj=v[1];
    nrmaj=1;
    for(i=2;i<=n;i++)
    {
        if(maj==v[i])
            nrmaj++;
        else
        {
            nrmaj--;
            if(nrmaj<0)
            {
                maj=v[i];
                nrmaj=1;
            }
        }
    }
    if(nrmaj!=0)
    {
        for(i=1;i<=n;i++)
            if(v[i]==maj)
                x++;
        if(x>=n/2+1)
        {
            fprintf(fout,"%d ",maj);
            fprintf(fout,"%d",x);
        }
        else
            fprintf(fout,"-1");
    }
    return 0;
}