Pagini recente » Istoria paginii runda/vs11_12_smileagain/clasament | Cod sursa (job #1547170) | Cod sursa (job #1689528) | Cod sursa (job #1369830) | Cod sursa (job #713640)
Cod sursa(job #713640)
#include <iostream>
////#include <algorithm>
#include <fstream>
#include <string>
#include <cstdio>
#include <cstdlib>
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
int n,k;
int v[3000001];
inline void schimb(int &x,int &y)
{
int c;
c=x;
x=y;
y=c;
}
int partitie(int st, int dr)
{
int p=rand()%(dr-st+1) + st;
int i;
int j;
schimb(v[p],v[dr]);
for(i=j=st;i<dr;i++)
if(v[i]<v[dr])
schimb(v[i],v[j++]);
schimb(v[j],v[dr]);
return j;
}
int sort(int st,int dr,int poz)
{
//if(st>=dr) return -1;
int p= partitie(st,dr);
if (p==poz) return v[p];
if (poz<p) return sort(st,p-1,poz);
else return sort(p+1,dr,poz);
}
int main()
{
string tmp;
in>>tmp;
n=atoi(tmp.c_str());
in>>tmp;
k=atoi(tmp.c_str());
for(int i=1;i<=n;i++)
{
in>>tmp;
v[i]=atoi(tmp.c_str());
}
out<<sort(1,n,k);
return 0;
}