Cod sursa(job #1274600)

Utilizator sorina.alexandraCostache Sorina-Alexandra sorina.alexandra Data 24 noiembrie 2014 00:02:18
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<iostream>
#include<fstream>
#include<cmath>
#include<climits>
using namespace std;
#define maxn 1000000
#define maxb 1000
int n, a[maxn],b[maxb],c[maxn],k;
void minim()
{
	int i,min,poz,l,gasit=0;
	l=sqrt((double)(n));
	min=INT_MAX;
	for(i=0; i<l; i++) 
		if(b[i]<min) {min=b[i]; poz=i;}
	for(i=poz*l; i<poz*l+l && gasit==0; i++)
		if(a[i]==min) {a[i]=INT_MAX; gasit=1;}
	c[k++]=min;
	b[poz]=INT_MAX;
	for(i=poz*l; i<poz*l+l; i++)
		if(a[i]<b[poz]) b[poz]=a[i];
	
}
int main()
{
	int l,i;
	ifstream f("algsort.in");
	f>>n;
    l=sqrt((double)(n));
    for (i=0;i<n;i++) f>>a[i];
	f.close();
    for (i=0;i<n;i++) b[i/l]+=a[i];
	for(i=0; i<l; i++) b[i]=INT_MAX;
	for(i=0; i<n; i++) 
		if(a[i]<b[i/l]) b[i/l]=a[i];
	while(k<n)
		minim(); 
	ofstream g("algsort.out");
	for(i=0; i<k; i++) g<<c[i]<<" ";
	g.close();

	
}