#include <stdlib.h>
#include <stdio.h>

#define TRUE 1
#define FALSE 0

int min(int a, int b) {return a > b ? b : a;}
int max(int a, int b) {return a > b ? a : b;}

int call_them(int (*func)(int, int), int a, int b)
{
   return func(a, b);
}

int foo(int do_min)  {
   int (*func) (int, int);

   if (do_min)
      func = min;
   else
      func = max;

   return call_them(func, 10, 20);
}

int main()
{
   printf("%d\n", foo(TRUE));
   return 0;
}