#include<iostream>
#include<cstring>
template <typename T>
T maxn(T arr[], int size);
template <typename T>
T maxn(T arr[], int size)
{
T max = arr[0];
for(int i = 1; i < size; i++)
{
if (arr[i] > max)
max = arr[i];
}
return max;
}
template <> //O TUTAJ!!!!!!!!!!!!!!!!!!!!!!!!!!!
char * maxn(char * arr[], int size)
{
char * longest = arr[0];
for (int i = 1; i < size; ++i)
{
if (strlen(arr[i]) > strlen(longest))
longest = arr[i];
}
return longest;
}
int main(void)
{
using namespace std;
char str1[] = "Hello";
char str2[] = "Hi";
char str3[] = "Hey";
char str4[] = "Greetings!"; // 10 characters
char str5[] = "Goodbye!!!"; // 10 characters
char * arrs[5] =
{
str1,
str2,
str3,
str4,
str5
};
int arri[5] = {1, 2, 3, 100, -100};
// use specialization
cout << "The largest string is "
<< maxn(arrs, 5) << endl;
// use template
cout << "The largest number is "
<< maxn(arri, 5) << endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdHJpbmc+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KVCBtYXhuKFQgYXJyW10sIGludCBzaXplKTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpUIG1heG4oVCBhcnJbXSwgaW50IHNpemUpCnsKICAgIFQgbWF4ID0gYXJyWzBdOwogICAgZm9yKGludCBpID0gMTsgaSA8IHNpemU7IGkrKykKICAgIHsKICAgICAgICBpZiAoYXJyW2ldID4gbWF4KQogICAgICAgICAgICBtYXggPSBhcnJbaV07CiAgICB9CiAgICByZXR1cm4gbWF4Owp9Cgp0ZW1wbGF0ZSA8PiAgICAgICAgICAgIC8vTyBUVVRBSiEhISEhISEhISEhISEhISEhISEhISEhISEhIQpjaGFyICogbWF4bihjaGFyICogYXJyW10sIGludCBzaXplKQp7CiAgICBjaGFyICogbG9uZ2VzdCA9IGFyclswXTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc2l6ZTsgKytpKQogICAgewogICAgICAgIGlmIChzdHJsZW4oYXJyW2ldKSA+IHN0cmxlbihsb25nZXN0KSkKICAgICAgICAgICAgbG9uZ2VzdCA9IGFycltpXTsKICAgIH0KCiAgICByZXR1cm4gbG9uZ2VzdDsKfQoKaW50IG1haW4odm9pZCkKewogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKICAgIGNoYXIgc3RyMVtdID0gIkhlbGxvIjsKICAgIGNoYXIgc3RyMltdID0gIkhpIjsKICAgIGNoYXIgc3RyM1tdID0gIkhleSI7CiAgICBjaGFyIHN0cjRbXSA9ICJHcmVldGluZ3MhIjsgLy8gMTAgY2hhcmFjdGVycwogICAgY2hhciBzdHI1W10gPSAiR29vZGJ5ZSEhISI7IC8vIDEwIGNoYXJhY3RlcnMKCiAgICBjaGFyICogYXJyc1s1XSA9CiAgICB7CiAgICAgICAgc3RyMSwKICAgICAgICBzdHIyLAogICAgICAgIHN0cjMsCiAgICAgICAgc3RyNCwKICAgICAgICBzdHI1CiAgICB9OwoKICAgIGludCBhcnJpWzVdID0gezEsIDIsIDMsIDEwMCwgLTEwMH07CgogICAgLy8gdXNlIHNwZWNpYWxpemF0aW9uCiAgICBjb3V0IDw8ICJUaGUgbGFyZ2VzdCBzdHJpbmcgaXMgIgogICAgICAgICA8PCBtYXhuKGFycnMsIDUpIDw8IGVuZGw7CgogICAgLy8gdXNlIHRlbXBsYXRlCiAgICBjb3V0IDw8ICJUaGUgbGFyZ2VzdCBudW1iZXIgaXMgIgogICAgICAgICA8PCBtYXhuKGFycmksIDUpIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=