Pagini recente » Istoria paginii utilizator/caraianioana | Cod sursa (job #1603689) | Cod sursa (job #2015607) | Cod sursa (job #1452617) | Cod sursa (job #1553418)
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int n,i,c[3000001],k;
int partitie(int st, int dr)
{
int i,x,j;
i=st;
j=dr;
x=c[st];
while (1)
{
while(c[i]<x)
{
i++;
}
while(c[j]>x)
{
j--;
}
if (i<j) swap(c[i],c[j]);
else return j;
}
}
int quickSelect(int st, int dr)
{
int index;
if(st==dr) return st;
index=partitie(st,dr);
if(k==index) return k;
else if(k<index) return partitie(st,index);
else return partitie(index+1, dr);
}
int main()
{
srand(time(NULL));
f>>n>>k;
for(i=1;i<=n;i++) f>>c[i];
g<<c[quickSelect(1,n)]<<endl;
for(i=1;i<=n;i++) g<<c[i]<<" ";
return 0;
}