Pagini recente » Cod sursa (job #1577602) | Cod sursa (job #622330) | Cod sursa (job #581312) | Cod sursa (job #371255) | Cod sursa (job #2063677)
#include <iostream>
#include <algorithm>
using namespace std;
unsigned int n,a[250005],pivot,a1,a2;
void qsort(int st,int dr)
{
pivot=(st+dr)/2;//pivot=rand()%(dr-st+1)+st;
// if(n%2==0&&(pivot >n/2)) qsort(st,pivot);
// if(n%2==1&&(pivot >(n+1)/2)) qsort(st,pivot);
if(st==dr)return;
cout<<pivot;
for(int i=st;i<=dr;i++)
{
if(a[pivot]<a[i]&&pivot>i)
swap(a[pivot],a[i]),pivot=i;
if(a[pivot]>a[i]&&pivot<i)
{
swap(a[pivot],a[pivot+1]),pivot++;
if(i-pivot==1)
swap(a[pivot-1],a[i]);
}
}
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<"\n";
if(n%2==1)
{
if(pivot==((n+1)/2))
{
a1=a[pivot];
}
return;
}
else
{
if(pivot==n/2)
a1=a[pivot];
if(pivot==n/2+1)
a2=a[pivot];
return;
}
qsort(pivot+1,dr);
}
int main()
{///timus1306
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
qsort(1,n);
cout<<a1<<" "<<a2<<" ";
if(n%2==1)
cout<<a1;
else
cout<<((double)a1+(double)a2)/(double)2;
return 0;
}