Pagini recente » Statistici Parlea (myhyay) | Cod sursa (job #1266174) | Cod sursa (job #2967250) | Cod sursa (job #1181841) | Cod sursa (job #1274600)
#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();
}