Cod sursa(job #645349)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 9 decembrie 2011 13:41:01
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<iostream>
#include<fstream>
using namespace std;
struct valoare {
	int min,max,pozmin,pozmax;
};
valoare x;
int v[500001];
valoare divimp (int p, int q)
{
	int m;
	valoare a,b;
	if(p==q) {
		x.min=v[p];
		x.max=v[p];
		x.pozmin=p;
		x.pozmax=p;
		return x;
	}
	else {
		m=(p+q)/2;
		a=divimp(p,m);
		b=divimp(m+1,q);
		if(b.max>a.max) {
			a.max=b.max;
			a.pozmax=b.pozmax;
		}
		if(a.min>b.min) {
			a.min=b.min;
			a.pozmin=b.pozmin;
		}
		return a;
	}
}
int main ()
{
	int n,i,c,p,q;
	ifstream f("algsort.in");
	ofstream g("algsort.out");
	f>>n;
	for(i=1;i<=n;i++)
		f>>v[i];
	f.close();
	p=1;
	q=n;
	while(p<q) {
		x=divimp(p,q);
		c=v[p];
		v[p]=x.min;
		v[x.pozmin]=c;
		c=v[q];
		v[q]=x.max;
		v[x.pozmax]=c;
		p++;
		q--;
	}
	for(i=1;i<=n;i++)
		g<<v[i]<<" ";
	g.close();
	return 0;
}