#include <stdio.h>
int MAX(int a,int b)
{
return a>b?a:b;
}
int MIN(int a,int b)
{
return a<b?a:b;
}
//search max from a[] between low and high
int MaxSearch(int *a,int low,int high)
{
if(low==high) return a[low];
int middle=(low+high)/2;
return MAX(MaxSearch(a,low,middle),MaxSearch(a,middle+1,high));
}
//search min from a[] between low and high
int MinSearch(int *a,int low,int high)
{
if(low==high) return a[low];
int middle=(low+high)/2;
return MIN(MinSearch(a,low,middle),MinSearch(a,middle+1,high));
}
//when b is true search max from a[] between low and high,
//when b is false search min from a[] between low and high
int MAXMIN(int *a,int low,int high,bool b)//b true max ,false min
{
if(b) return MaxSearch(a,low,high);
else return MinSearch(a,low,high);
}
int main()
{
int a[20]={20,1984,1865,1795,1645,1594,14852,13455,12364,1135,10941,914,800,736,665,541,436,395,214,196};
int b;
b=MAXMIN(a,0,19,true);
printf("MAX=%d\n",b);
b=MAXMIN(a,0,19,false);
printf("MIN=%d\n",b);
return 1;
}