Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <tuple>
- #include <algorithm>
- #include <vector>
- #include <string.h>
- typedef std::tuple <long long, long long, int> Triple;
- int main() {
- int n;
- scanf("%d", &n);
- std::vector<std::string> words(n);
- std::vector<Triple> turples(n);
- for (int i = 0; i < n; ++i) {
- long long a=0, b;
- char s[3], buf[10];
- scanf("%I64d %2s", &b, s);
- sprintf(buf, "%I64d %s", b, s);
- words[i] = buf;
- int slen = strlen(s);
- int exp = (slen == 1 ? 3 : 0);
- for (int i = 0; i < slen; ++i)
- switch (s[i]) {
- case 'm': exp += 0; break;
- case 'k': exp += 6; break;
- case 'M': exp += 9; break;
- case 'G': exp += 12; break;
- case 'g': exp += 0; break;
- case 't': exp += 6; break;
- case 'p': exp += 1; b *= 1638; break;
- }
- while (b < 1e11 && exp)
- --exp, b *= 10;
- while (exp) {
- b *= 10;
- a = a * 10 + b / 1000000000000LL;
- b %= 1000000000000LL;
- --exp;
- }
- turples[i] = std::make_tuple(a, b, i);
- }
- std::sort(turples.begin(), turples.end());
- for (auto & it : turples)
- printf("%s\n", words[std::get<2>(it)].c_str());
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement