Cod sursa(job #1043944)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 29 noiembrie 2013 02:15:46
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
#include<cmath>
#include<limits.h>
#define dim 500100
#define lim 2000000000
using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int main () {
	unsigned int v[dim],s[6000],p[6000];
unsigned int Lung,l,i,j,minu,n,k;
	f>>n;
	
	l=sqrt(n);
	
	for(i=0;i<n;++i)
		f>>v[i];

	Lung=n/l;
	
	for(i=0;i<=Lung;++i)
		s[i]=lim;
	
	for(i=0;i<n;++i){ 
		k=i/l;
		if(s[k]>v[i]) {
			s[k]=v[i];
			p[k]=i;
		}
	}
	
	for(i=0;i<n;++i) {
		
		minu=lim;
		
		for(j=0;j<=Lung;++j) {
			if(minu>s[j]) {
				minu=s[j];
				k=p[j];
			}
		}
		g<<minu<<" ";
		v[k]=lim;
		int   t=k/l;
		s[t]=lim;
		for(j=l*t;j<(l)*(t+1) && j<n ;++j) {
			
			if(v[j]<s[t] ) {
				p[t]=j;
				s[t]=v[j];
			}
		}
	}
	return 0;
}