Cod sursa(job #768933)
Utilizator | Ion Ureche ion824 | Data | 17 iulie 2012 21:55:15 |
---|---|---|---|
Problema | Statistici de ordine | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.59 kb |
#include<fstream>
using namespace std;
int i,t[3000001],n;
void Quick(int st,int dr,int k ){
int i=st,j=dr,w,piv=t[(i+j)/2];
do{
while(t[i] < piv) i++;
while(t[j] > piv) j--;
if(i <= j) { w=t[i]; t[i]=t[j]; t[j]=w; i++; j--; }
}while(j >= i);
if(st<j)
if(j-st+1>=k)
Quick(st,j,k);
if(dr>i)
if(j-st+1<k)
Quick(i,dr,k-(j-st+1));
}
int main()
{
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int k;
fin>>n>>k;
for(i=1;i<=n;i++)
fin>>t[i];
Quick(1,n,k);
fout<<t[k];
}