hiho week 37 register

Ended

Participants:317

Verdict:Accepted
Score:100 / 100
Submitted:2015-03-15 00:18:48

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <cstdio>
#define swap(a,b) (a) ^= (b) ^= (a) ^= (b)
const int MAXINT = 1000000+10;
const int FALSE = -1;
int a[MAXINT];
int search(int left, int right ,int k)
{
    if(left>right)
        return FALSE;
    int pv = left;
    int i =left+1 ;
    for (int j = left+1; j <= right; j++)
    {
        if(a[j]>a[pv])
            continue;
        else 
        {
            if(i!=j)
                swap(a[i],a[j]);
            i++;
        }
    }
    i--;
    if(i!=pv)
        swap(a[i],a[pv]);
    if (i==k)
        return a[i];
    else if(i>k)
        return search(left, i-1, k);
    else 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX