Cod sursa(job #1021281)
| Utilizator | Data | 3 noiembrie 2013 16:42:08 | |
|---|---|---|---|
| Problema | Statistici de ordine | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.72 kb |
#include <fstream>
#include <iostream>
int v[3000005], n, k;
using namespace std;
void qsm(int s, int d)
{
if(s>d)
return;
int piv=(s+d)/2;
int vp=v[piv];
int i=s, j=d,t;
while(i<=j)
{
while(v[i]<vp)
i++;
while(v[j]>vp)
j--;
if(i<=j)
{
t=v[i];
v[i]=v[j];
v[j]=t;
i++;
j--;
}
}
if(k>j)
qsm(i, d);
else
qsm(s, j);
}
int main(int argc, char *argv[])
{
ifstream fin("sdo.in");
ofstream fout("sdo.out");
fin>>n>>k;
int i;
k--;
for(i=0;i<n;i++)
fin>>v[i];
qsm(0, n-1);
fout<<v[k];
return EXIT_SUCCESS;
}
