#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
#include <iterator>
#include <cstring>
using namespace std;
string remove_dot(const char *p)
{
const char *dot = strchr(p, '.');
return dot ? string(p, dot - p) : string(p);
}
bool compare_filenames(string a, string b)
{
char *pA, *pB;
long A = strtol(a.c_str(), &pA, 10),
B = strtol(b.c_str(), &pB, 10);
if (A < B)
return true;
if (A == B)
return remove_dot(pA) < remove_dot(pB);
return false;
}
int main(int, char **)
{
const char *v[] ={
"a10",
"10a",
"1ab",
"2a",
"1aa",
"a2",
"1bb",
"1a",
"a1",
"1b",
"10b",
"2b",
"b1",
"b10"
};
vector<string> t(v, v+(sizeof(v)/sizeof(char*)));
sort(t.begin(), t.end(), compare_filenames);
copy(t.begin(), t.end(), ostream_iterator<string>(cout, "\n"));
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxjc3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RyaW5nIHJlbW92ZV9kb3QoY29uc3QgY2hhciAqcCkKewogICAgY29uc3QgY2hhciAqZG90ID0gc3RyY2hyKHAsICcuJyk7CiAgICByZXR1cm4gZG90ID8gc3RyaW5nKHAsIGRvdCAtIHApIDogc3RyaW5nKHApOwp9Cgpib29sIGNvbXBhcmVfZmlsZW5hbWVzKHN0cmluZyBhLCBzdHJpbmcgYikKewogICAgY2hhciAqcEEsICpwQjsKICAgIGxvbmcgQSA9IHN0cnRvbChhLmNfc3RyKCksICZwQSwgMTApLAogICAgICAgICBCID0gc3RydG9sKGIuY19zdHIoKSwgJnBCLCAxMCk7CiAgICBpZiAoQSA8IEIpCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICBpZiAoQSA9PSBCKQogICAgICAgIHJldHVybiByZW1vdmVfZG90KHBBKSA8IHJlbW92ZV9kb3QocEIpOwogICAgcmV0dXJuIGZhbHNlOwp9CgppbnQgbWFpbihpbnQsIGNoYXIgKiopCnsKICAgIGNvbnN0IGNoYXIgKnZbXSA9ewogICAgICAgICJhMTAiLAogICAgICAgICIxMGEiLAogICAgICAgICIxYWIiLAogICAgICAgICIyYSIsCiAgICAgICAgIjFhYSIsCiAgICAgICAgImEyIiwKICAgICAgICAiMWJiIiwKICAgICAgICAiMWEiLAogICAgICAgICJhMSIsCiAgICAgICAgIjFiIiwKICAgICAgICAiMTBiIiwKICAgICAgICAiMmIiLAogICAgICAgICJiMSIsCiAgICAgICAgImIxMCIKICAgIH07CiAgICB2ZWN0b3I8c3RyaW5nPiB0KHYsIHYrKHNpemVvZih2KS9zaXplb2YoY2hhciopKSk7CiAgICBzb3J0KHQuYmVnaW4oKSwgdC5lbmQoKSwgY29tcGFyZV9maWxlbmFtZXMpOwogICAgY29weSh0LmJlZ2luKCksIHQuZW5kKCksIG9zdHJlYW1faXRlcmF0b3I8c3RyaW5nPihjb3V0LCAiXG4iKSk7CiAgICByZXR1cm4gMDsKfQ==