Cod sursa(job #1220454)

Utilizator ptquake10ptquake10 ptquake10 Data 17 august 2014 13:49:35
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <fstream>
using namespace std;

int n, k, a[3000010];

void qs(int l, int r) {
    int i = l, j = r, p = a[(l+r)/2];
    while (i <= j) {
        while (a[i] < p) i++;
        while (a[j] > p) j--;
        if (i <= j) {
            swap(a[i], a[j]);
            i++;
            j--;
        }
    }
    if (i < r && k >= i) qs(i, r);
    if (j > l && k <= j) qs(l, j);
}

int main() {
	int x, y;
	
	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]);
	}
	qs (1, n);
	printf("%d\n", a[k]);
	
	return 0;
}