Cod sursa(job #1481530)

Utilizator BodStfBodoarca Stefan BodStf Data 4 septembrie 2015 18:40:01
Problema Elementul majoritar Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<stdio.h>
#include<malloc.h>

long N,count,*v;

void divide(long* v,long l,long r,long x)
{
	if(l>=r)
		return;
	long m=(l+r)/2;
	divide(v,l,m,x);
	divide(v,m+1,r,x);
	if(v[m]==x)
		count++;
}

int main()
{
	FILE* f1,*f2;
	f1=fopen("elmaj.in","r");
	f2=fopen("elmaj.out","w");
	fscanf(f1,"%ld",&N);
	v=(long*)malloc(N*sizeof(long));
	for(int i=0;i<N;i++)
		fscanf(f1,"%ld",&v[i]);
	int ok=0;
	for(int i=0;i<N;i++,count=0)
	{
		divide(v,0,N,v[i]);
		if(count>=N/2+1)
		{
			fprintf(f2,"%ld %ld\n",v[i],count);
			ok=1;
			break;
		}
	}
	if(!ok)
		fprintf(f2,"-1\n");
	free(v);
	return 0;
}