1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #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==
-
upload with new input
-
result: Success time: 0.02s memory: 2864 kB returned value: 0
a1 a10 a2 b1 b10 1a 1aa 1ab 1b 1bb 2a 2b 10a 10b


