Cod sursa(job #1884275)

Utilizator TibiraducanuTiberiu Raducanu Tibiraducanu Data 18 februarie 2017 16:39:02
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

const int N=3000005, Dim=100000;
int v[N],Pos;
queue <int> q[256];
char buff[Dim];

/*void Read(int &a){
    while(!isdigit(buff[Pos]))
        if(++Pos==Dim) cin.read(buff, Dim), Pos=0;

    a=0;
    while(isdigit(buff[Pos])){
        a=a*10+buff[Pos]-'0';
        if(++Pos==Dim) cin.read(buff, Dim), Pos=0;
    }
}*/

int main()
{
    freopen("sdo.in","r",stdin);
    freopen("sdo.out","w",stdout);

    //cin.read(buff,Dim), Pos=0;
    int n,k,i,j,x,cnt;
    //Read(n), Read(k);
    //for(i=1;i<=n;i++) Read(x), v[i]=x;

    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++) scanf("%d",&v[i]);

    for(i=0;i<32;i+=8){
        cnt=0;
        for(j=1;j<=n;j++) q[(v[j]>>i)&255].push(v[j]);
        for(j=0;j<256;j++)
            while(!q[j].empty())
                v[++cnt]=q[j].front(), q[j].pop();
    }
    printf("%d\n",v[k]);

    return 0;
}