#include <iostream>
#include <algorithm>
#include <string>
template<int N>
bool char_array_less(const char(&l)[N], const char(&r)[N])
{
return std::char_traits<char>::compare(&l[0], &r[0], N) < 0;
}
template<int N>
void swap_char_arrays( char(*l)[N], char(*r)[N])
{
std::swap_ranges(&(*l)[0], &(*l)[0]+N, &(*r)[0]);
}
const int ROWS = 105;
const int COLS = 105;
int main()
{
char a[ROWS][COLS] = {"foo", "bar", "whatever" };
for(char(*i)[COLS] = a; i != a+ROWS; ++i)
swap_char_arrays(i,
std::min_element(i, a+ROWS, char_array_less<COLS>));
for(int i=0; i<ROWS; ++i)
std::cout << a[i] << '\n';
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHN0cmluZz4KCnRlbXBsYXRlPGludCBOPgpib29sIGNoYXJfYXJyYXlfbGVzcyhjb25zdCBjaGFyKCZsKVtOXSwgY29uc3QgY2hhcigmcilbTl0pCnsKICAgcmV0dXJuIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj46OmNvbXBhcmUoJmxbMF0sICZyWzBdLCBOKSA8IDA7Cn0KCnRlbXBsYXRlPGludCBOPgp2b2lkIHN3YXBfY2hhcl9hcnJheXMoIGNoYXIoKmwpW05dLCBjaGFyKCpyKVtOXSkKewogICAgc3RkOjpzd2FwX3JhbmdlcygmKCpsKVswXSwgJigqbClbMF0rTiwgJigqcilbMF0pOwp9Cgpjb25zdCBpbnQgUk9XUyA9IDEwNTsKY29uc3QgaW50IENPTFMgPSAxMDU7CmludCBtYWluKCkKewogICAgY2hhciBhW1JPV1NdW0NPTFNdID0geyJmb28iLCAiYmFyIiwgIndoYXRldmVyIiB9OwoKICAgIGZvcihjaGFyKCppKVtDT0xTXSA9IGE7IGkgIT0gYStST1dTOyArK2kpCiAgICAgICAgc3dhcF9jaGFyX2FycmF5cyhpLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptaW5fZWxlbWVudChpLCBhK1JPV1MsIGNoYXJfYXJyYXlfbGVzczxDT0xTPikpOwoKICAgIGZvcihpbnQgaT0wOyBpPFJPV1M7ICsraSkKICAgICAgICBzdGQ6OmNvdXQgPDwgYVtpXSA8PCAnXG4nOwp9