Cod sursa(job #2861688)

Utilizator cezarinfoTulceanu Cezar cezarinfo Data 4 martie 2022 11:44:51
Problema Statistici de ordine Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<vector>
using namespace std;
FILE*in=fopen("sdo.in","r");
FILE*out=fopen("sdo.out","w");
const int NMAX=3000007;
int n,k,i,a,r;
vector<int> v;
void sol(vector<int> &ve,int p)
{
    vector<int> st,dr;
    int ra=rand()%ve.size();
    int el=ve[ra];
    for(int j=0;j<ra;j++)
    {
        if(ve[j]<=el)
        {
            st.push_back(ve[j]);
        }
        else
        {
            dr.push_back(ve[j]);
        }
    }
    for(int j=ra+1;j<ve.size();j++)
    {
        if(ve[j]<=el)
        {
            st.push_back(ve[j]);
        }
        else
        {
            dr.push_back(ve[j]);
        }
    }
    if(st.size()==p-1)
    {
        r=el;
    }
    else if(st.size()>p-1)
    {
        sol(st,p);
    }
    else
    {
        sol(dr,p-1-st.size());
    }
}
int main()
{
    fscanf(in,"%d%d",&n,&k);
    for(i=1;i<=n;i++)
    {
        fscanf(in,"%d",&a);
        v.push_back(a);
    }
    sol(v,k);
    fprintf(out,"%d",r);
}