Pagini recente » Cod sursa (job #2914392) | Cod sursa (job #2416175) | Cod sursa (job #284435) | Cod sursa (job #895926) | Cod sursa (job #1045939)
#include<fstream>
#include<iostream>
#include<math.h>
using namespace std;
fstream f("algsort.in",ios::in);
fstream g("algsort.out",ios::out);
int main()
{
long v[50000],s[50000],p[800],n,i,min,pas,j,pi,aux;
//cin>>n;
f>>n;
pas=sqrt(n);
if (pas*pas != n) pas++; // verificare n patrat perfect, pas marimea partitiei
min=2147483647;
for (j=1,i=0,pi=0;i<n;i++,j++)
{
//cin>>v[i];
f>>v[i];
if (min > v[i]) min=v[i];
if (j==pas || i==n-1)
{
p[pi] = min; //minimul pe fiecare partitie
min = 2147483647;
pi++;
j=0;
}
}
f.close();
for (i=0;i<n;i++)
{
min=2147483647;
for (pi=0;pi<pas;pi++)
if (min >= p[pi] && p[pi]!=-1)
{ min=p[pi];
j=pi;
}
s[i]=min;
min=2147483647;
aux=j*pas;
for (pi=0;pi<pas && aux+pi<n;pi++)
{
if (v[aux+pi] == s[i]) v[aux+pi] = -1;
else if (min > v[aux+pi] && v[aux+pi] != -1)
min = v[aux+pi];
}
p[j] = min;
}
for (i=0;i<n;i++)
// cout<<s[i]<<" ";
g<<s[i]<<" ";
g.close();
return 0;
}