Cod sursa(job #1043899)

Utilizator omunegruomunegru omunegru Data 29 noiembrie 2013 00:07:06
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>
#include<cmath>
#define dim 500100

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");
long v[dim],s[dim];
long  Lung,l,i,j,minu,minu2,n,stop,pos;
inline long  minim(long a,long  b) {
	if(a<b)
		return a;
	return b;
}
int main () {
	
	f>>n;
	l=sqrt(n);
	
	for(i=0;i<n;++i){
		f>>v[i];
		pos=i/l;
		if(!s[pos])
			s[pos]=v[i];
		else
			s[pos]=minim(s[pos],v[i]);
	}
	Lung=(n)/l;
	
	for(i=0;i<n;++i) {
		minu=99999999;
		for(j=0;j<=Lung;++j) {
			if(s[j]<minu){
				minu=s[j];
				pos=j;
			}
		}
		g<<minu<<" ";
		stop=0;
		minu2=99999999;
		for(j=l*(pos);j<(pos+1)*l && j<n;++j) {
			if(v[j]==minu && stop==0) {
				v[j]=9999999;
				stop=1;
				
			}
			else {
				if(v[j]<=minu2) {
					minu2=v[j];
				}
			}
		}
		s[pos]=minu2;
	}
}