Cod sursa(job #1027004)

Utilizator RaduStefanFMI - Radu Stefan RaduStefan Data 12 noiembrie 2013 12:50:35
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<iostream.h>
#include<fstream.h>
using namespace std;
int v[100],w[100];
int main()
{
	int max1=INT_MIN,max2=INT_MIN,i,n,val1,val2,aux,m;
	ifstream fcin("elmaj.in");
	ofstream fcout("elmaj.out");
	fcin>>n;
	m=n;
	fcin>>v[1];
	max1=0;val1=v[1],w[1]=1;i=2;
	while(i<=n)
	{
		fcin>>v[i];aux=0;
		while(v[i]==v[i-1]&&i<=n)
		{
			aux++;
			n--;
			fcin>>v[i];
		}
		w[i]=1;
		w[i-1]+=aux;
		if(v[i-1]==val1)
			max1+=w[i-1];
		else if(v[i-1]==val2)
		{
			if(max2<0)max2=w[i-1];
				else max2+=w[i-1];
		}
		else
		{
			if(w[i-1]>max1)
			{
				max2=max1;
				val2=val1;
				max1=w[i-1];
				val1=v[i-1];
			}
			else if(w[i-1]>max2)
			{
				max2=w[i-1];
				val2=v[i-1];
			}
		}
		i++;
	}
	max1=0;max2=0;
	for(i=1;i<=n;i++)
	{
		if(v[i]==val1)max1+=w[i];
		if(v[i]==val2)max2+=w[i];
	}
	if(max1>=m/2+1)fcout<<val1;
	else if(max2>=m/2+1)fcout<<val2;
	else cout<<-1;
	return 0;
}