Cod sursa(job #1018844)

Utilizator ioalexno1Alexandru Bunget ioalexno1 Data 30 octombrie 2013 00:07:01
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <cstdio>
#include <cstdlib>
#include <ctime>
#define N 3000010

using namespace std;

int a[3][N];

int main()
{
   freopen("sdo.in","r",stdin);
   int n, k;
   scanf("%d %d\n",&n,&k);
   for(int i = 1; i <= n; ++i)
      scanf("%d",&a[0][i]);

   fclose(stdin);
   bool gasit = false;
   int sol;
   srand(time(NULL));
   while(!gasit)
        {
        int mij = rand()%n+1;
        a[1][0]=a[2][0] = 0;
        for(int i = 1; i <= n; ++i)
            if(a[0][i] <= a[0][mij])a[1][++a[1][0]] = a[0][i];
            else a[2][++a[2][0]] = a[0][i];

        if(k == a[1][0])
                        {
                        sol = a[0][mij];
                        gasit = true;
                        }
        else if(k > a[1][0])
                    {
                    k -= a[1][0];
                    n = a[2][0];
                    for(int i = 1; i <= n; ++i)
                        a[0][i] = a[2][i];
                    }
        else {
             n = a[1][0];
             for(int i = 1; i <= n; ++i)
                a[0][i] = a[1][i];
             }
        }
    freopen("sdo.out","w",stdout);
    printf("%d",sol);
    fclose(stdout);
    return 0;
}