Cod sursa(job #1043945)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 29 noiembrie 2013 02:23:07
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<fstream>
#define lim  2000000000
#define dim  500200
using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");
long  arb[4*dim+66],v[dim],pos,i,val,n;
inline int minim(int a ,int b ){
	if(a<b)
		return a;
	return b;
}
void update(int nod,int st,int dr  ){ 
	
	if(st==dr) {
		arb[nod]=val;
		return ;
	}
	else {
		int mid=st+(dr-st)/2;
		
		if(pos<=mid)
			update(2*nod,st,mid);
		else 
			update(2*nod+1,mid+1,dr);
		arb[nod]=minim(arb[2*nod],arb[2*nod+1]);
	}
	
}
void update2(int nod,int st,int dr) {
	
	if(st==dr) {
		arb[nod]=lim;
		return ;
	}
	else {
		int mid=st+(dr-st)/2;
		if(arb[2*nod]==val)
			update2(2*nod,st,mid);
		else
			update2(2*nod+1,mid+1,dr);
		arb[nod]=minim(arb[2*nod],arb[2*nod+1]);
	}
	
}
int main () {
	f>>n;
	
	for(i=1;i<=n;++i){
		f>>v[i];
		pos=i;
		val=v[i];
		update(1,1,n);
	}
	for(i=1;i<=n;++i){
		g<<arb[1]<<" ";
		val=arb[1];
		update2(1,1,n);
	}
	return 0;
}