Cod sursa(job #747766)

Utilizator FlameingoAiordachioaei Marius Flameingo Data 11 mai 2012 20:12:22
Problema Elementul majoritar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<fstream>
#define DMAX 1000005
using namespace std;
int v[DMAX],n;
void citire()
{
	ifstream cin("elmaj.in");
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>v[i];
}
void interclasare(int a,int b,int m)
{
	int aux[DMAX],i=a,j=b+1,k=0;
	while(i<=b&&j<=m)
		if(v[i]<v[j])
			aux[++k]=v[i++];
		else
			aux[++k]=v[j++];
	while(i<=b)
		aux[++k]=v[i++];
	while(j<=m)
		aux[++k]=v[j++];
	for(i=a;i<=m;i++)
		v[i]=aux[i-a+1];
}
void sortare(int a,int b)
{
	if(b>a)
	{
		int m=(a+b)>>1;
		sortare(a,m);
		sortare(m+1,b);
		interclasare(a,m,b);
	}
}
void afisare()
{
	ofstream cout("elmaj.out");
	for(int i=1;i<=n;i++)
		cout<<v[i]<<' ';
}
int main()
{
	citire();
	sortare(1,n);
	afisare();
}