Cod sursa(job #2616318)

Utilizator cezarinfoTulceanu Cezar cezarinfo Data 18 mai 2020 01:17:52
Problema Statistici de ordine Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include<cstdio>
#include<algorithm>
using namespace std;
FILE*in=fopen("sdo.in","r");
FILE*out=fopen("sdo.out","w");
int n,k,v[3000003],i,it1,it2,p=1,x,y;
int main()
{
    fscanf(in,"%d%d",&n,&k);
    for(i=1;i<=n;++i)
    {
        fscanf(in,"%d",&v[i]);
    }
    x=1;
    y=n;
    while(p!=k)
    {
        p=(x+y)/2;
        it1=x;
        it2=y;
        while(it1<=it2)
        {
                while(v[it2]>v[p])
                {
                    --it2;
                }
                swap(v[it2],v[p]);
                p=it2;
                --it2;
                if(it1>it2)
                {
                    break;
                }
                while(v[it1]<v[p])
                {
                    ++it1;
                }
                swap(v[it1],v[p]);
                p=it1;
                ++it1;
        }
        if(p>k)
        {
            y=p-1;
        }
        else
        {
            x=p+1;
        }
    }
    fprintf(out,"%d",v[p]);
}