Cod sursa(job #1021258)

Utilizator 3nTRoPYiorga dan 3nTRoPY Data 3 noiembrie 2013 16:14:38
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#include <iostream>
int v[300000], 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;
 		 while(i<=j)
 		 {
 		    while(v[i]<vp)
 		     i++;
	      while(v[j]>vp)
	       j--;
        if(i<=j)
        {
 						 v[i]=v[i]^v[j];
 						 v[i]=v[i]^v[j];
 						 v[i]=v[i]^v[j];
 						 i++;
 						 j--;
			  }
     }
     if(k>i)
        qsm(piv+1, d);
     else
        qsm(s, piv-1);
}

int main(int argc, char *argv[])
{
 		ifstream fin("sdo.in");
 		ofstream fout("sdo.out");
 		fin>>n>>k;
 		int i;
 		for(i=0;i<n;i++)
 		   fin>>v[i];
    qsm(0, n-1);
    fout<<v[k-1];
    return EXIT_SUCCESS;
}