#include<iostream>
#include<cmath>
#include<vector>
#include<string>
#include<stdlib.h>
#include<algorithm>
using namespace std;
typedef struct {
	int* elem;
	int Tablelen;
}SStable;
void InitTable(SStable &S,int len)
{
	S.elem = new int[len];
	S.Tablelen = len;
}
int Search_seq(SStable ST, int key)
{
	int i;
	ST.elem[0] = key;
	for (i = ST.Tablelen; ST.elem[i] != key; --i);
	return i;
}
void quick_sort(SStable &S, int l, int r)
{
    if (l >= r)
        return;

    int x = S.elem[(r + l) / 2];
    int i = l - 1, j = r + 1;

    while (i < j)
    {
        do i++;  while (S.elem[i] < x);
        do j--;  while (S.elem[j] > x);
        if (i < j)
            swap(S.elem[i], S.elem[j]);
    }
    quick_sort(S, l,j),
        quick_sort(S,j + 1, r);
    return;
}
int Binary_Search(SStable S, int key)
{
    int low = 0, high = S.Tablelen - 1, mid;
    while (low <= high)
    {
        mid = (low + high) / 2;
        if (S.elem[mid] == key)
            return mid;
        else if (S.elem[mid] > key)
            high = mid - 1;
        else
            low = mid + 1;
    }
    return -1;
}