Cod sursa(job #3356765)

Utilizator CondoracheTudorCondorache Tudor CondoracheTudor Data 3 iunie 2026 21:30:58
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
using namespace std;
int n,k;
int arr[3000001];
void find(int target,int l,int r) {
    if (l>=r) return;
    int pos=rand()%(r-l+1)+l;
    int val=arr[pos];
    int i=l,j=r;
    while(i<=j) {
        while(arr[i]<val)i++;
        while(arr[j]>val)j--;
        if (i<=j) {
            swap(arr[i], arr[j]);
            i++;
            j--;
        }
    }
    if (target<=j) find(target,l,j);
    else if (target>=i) find(target,i,r);
}
int main() {
    ifstream f("sdo.in");
    ofstream g("sdo.out");
    f>>n>>k;
    for (int i=1;i<=n;i++)f>>arr[i];
    find(k,1,n);
    g<<arr[k];
    return 0;
}