Pagini recente » Monitorul de evaluare | Cod sursa (job #583653) | Cod sursa (job #2071479) | Cod sursa (job #2969791) | Cod sursa (job #2277589)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,v[500001],i,p,c;
int main()
{
fin>>n;
fin>>v[1];
for(i=2; i<=n; i++)
{
fin>>v[i];
p=i/2;
c=i;
while(p>=1&&v[p]<v[c])
{
swap(v[p],v[c]);
c=p;
p=p/2;
}
}
for(i=n; i>=2; i--)
{
swap(v[1],v[i]);
p=1;
c=2;
while(c<=i-1)
{
if(c+1<=i-1&&v[c+1]>v[c])
c++;
if(v[p]<v[c])
swap(v[p],v[c]);
else
break;
p=c;
c=2*p;
}
}
for(i=1;i<=n;i++)
fout<<v[i]<<" ";
}