Cod sursa(job #965984)

Utilizator Theorytheo .c Theory Data 25 iunie 2013 00:41:13
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
//statistici de orinde, radix sort(10 ^ 9)

#include<fstream>
#include<cstring>

using namespace std;

ifstream fin("sdo.in");
ofstream fout("sdo.out");

const int Nmax = 3000009;
const int Limit = 255;

int N; int K; int A[Nmax]; int B[Nmax];

void Read(){

    fin >> N >> K;
    for(int i = 1; i <= N; ++i) fin >> A[i];
}


void Rad(const int byte, int A[], int B[]){

    int Count[Limit], Ind[Limit];

    memset(Count, 0, sizeof(Count));

    for(int i = 1; i <= N; ++i) ++Count[(A[i] >> byte) & Limit];

    Ind[0] = 1;

    for(int i = 1; i <= Limit; ++i) Ind[i] = Ind[i - 1] + Count[i - 1];

    for(int i = 1; i <= N; ++i)  B[ Ind[ (A[i] >> byte) & Limit ]++] = A[i];
}


void Solve(){

    Rad(0, A, B);
    Rad(8, B, A);
    Rad(16, A, B);
    Rad(24, B, A);
}

void Print(){

    fout << A[K];
}

int main(){

    Read (); Solve (); Print ();

    return 0;
}