Cod sursa(job #2616317)

Utilizator cezarinfoTulceanu Cezar cezarinfo Data 18 mai 2020 01:15:10
Problema Statistici de ordine Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 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;
                if(it1>=it2)
                {
                    break;
                }
                while(v[it1]<v[p])
                {
                    it1++;
                }
                swap(v[it1],v[p]);
                p=it1;
        }
        if(p>k)
        {
            y=p-1;
        }
        else
        {
            x=p+1;
        }
    }
    fprintf(out,"%d",v[p]);
}