Mai intai trebuie sa te autentifici.
Cod sursa(job #1018554)
Utilizator | Data | 29 octombrie 2013 18:54:25 | |
---|---|---|---|
Problema | Statistici de ordine | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.69 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("sdo.in");
ofstream g ("sdo.out");
long n,k,i,j,v[3000001];
long sdo(long cap1,long cap2)
{
long i=cap1,j=cap2;
long piv=v[(cap1+cap2+1)/2];
while (i<=j)
{
while (v[i]<piv)
i++;
while (v[j]>piv)
j--;
if (i <= j)
{
swap(v[i],v[j]);
i++;
j--;
}
}
if (k<=j)
return sdo(cap1,j);
else if (i<=k)
return sdo(i,cap2);
else
return v[k];
}
int main()
{
f>>n>>k;
for (i=1;i<=n;i++)
f>>v[i];
g<<sdo(1,n);
return 0;
}