#include <iostream>
#include <cstring>

template <typename T>
void maxn(T * arr, unsigned int n)
{
    T highest = arr[0];

    for (unsigned int i = 1; i < n; ++i)
    {
        if (highest < arr[i])
            highest = arr[i];
    }

    std::cout << std::endl << highest;
}


template<>
void maxn<char*>(char **array, unsigned int n)
{
    char *p = array[0];

    for (unsigned int i = 1; i < n; ++i)
    {
        if (strlen(p) < strlen(array[i]))
            p = array[i];
    }

    std::cout << std::endl << "Line: " << p << " & Length: " << strlen(p);
}

int main()
{
    int arr_int[] = {3, 8, 0 ,9};
    maxn(arr_int, 4);

    double arr_double[] = {2.56, 0, 1, 3.567, 41.7, 7.87};
    maxn(arr_double, 6);

    char *p[] = {
                    ".....................",
                    ".................................",
                    ".............",
                    "**********************",
                    "^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
                 };
    maxn(p, 5);

    return 0;
}

