Cod sursa(job #373491)

Utilizator Bogdan_CCebere Bogdan Bogdan_C Data 13 decembrie 2009 22:07:28
Problema Statistici de ordine Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
#include<ctime>
#include<cstdlib>
using namespace std;
int a[3000003];

void Quick(int* t,int st,int dr,int k) //Sortarea rapida
 {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);
   int temp1=j-st+1;
   int temp2=i-st+1;  
  if(st < j && k<temp1) Quick(t,st,j,k);
  if(dr > i && temp2<k) Quick(t,i,dr,k-temp2);
 }

int main()
{int n,k;
srand(time(NULL));
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
Quick(a,1,n,k);
printf("%d",a[k]);
    return 0;}