Cod sursa(job #833749)

Utilizator vladm97Matei Vlad vladm97 Data 12 decembrie 2012 23:26:53
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream>
#define elmax 2147483647
#define lmax 500000
using namespace std;
int arbint[5*lmax],v[lmax];
int minim(int a, int b){
	return a<b?a:b;}
void buildarbint(int nod,int st,int dr){
	if(st==dr)
		arbint[nod]=v[st];
	else{
		int div=(st+dr)/2;
		buildarbint(nod*2,st,div);
		buildarbint(nod*2+1,div+1,dr);
		arbint[nod]=minim(arbint[2*nod],arbint[2*nod+1]);
		}
}
void sterge(int nod, int st, int dr){
	if(st==dr)arbint[nod]=elmax;
	else{
		int div=(st+dr)/2;
		if(arbint[2*nod]==arbint[1])
			sterge(2*nod,st,div);
		else
			sterge(2*nod+1,div+1,dr);
		arbint[nod]=minim(arbint[2*nod],arbint[2*nod+1]);
	}
}
int main(){
	int i,n;
	ifstream f("algsort.in");
	ofstream g("algsort.out");
	f>>n;
	for(i=1;i<=n;i++){
		f>>v[i];
		buildarbint(1,1,n);
	}
	for(i=1;i<=n;i++){
		g<<arbint[1]<<" ";
		sterge(1,1,n);
	}
}