v 0. Pasted by slipstak2 as cpp at 2011-11-01 07:48:04 MSK and set expiration to never.

Paste will expire never.

  1. // Очно-заочный кружок
  2. // Занятие №9. Учебные задачи
  3. // Задача B. Сортировка масс
  4. // ibelyaev: 31Oct2011
  5. // http://cppalgo.blogspot.com/2011/04/blog-post.htm
  6.  
  7. #include <iostream>
  8. #include <cstdio>
  9. #include <algorithm>
  10. #include <string>
  11. #include <string.h>
  12. #include <cmath>
  13. #include <queue>
  14. #include <vector>
  15. #include <map>
  16. #include <stdlib.h> // for exit(0)
  17. #include <stack>
  18. #include <list>
  19. #include <ctime>
  20. #include <set>
  21.  
  22. using namespace std;
  23.  
  24. typedef unsigned long long UINT;
  25. int n;
  26. struct volume {
  27.     int value;
  28.     string unit;
  29.     double sort_value;
  30.     volume(){}
  31.     void input() {
  32.         char buf[10];
  33.         scanf("%d %s\n", &value, &buf);
  34.         unit = string(buf);
  35.         int pos = 0;
  36.         double mul = 1;
  37.         switch(buf[pos]) {
  38.             case 'm': mul = 1e-3 ; pos++; break;
  39.             case 'k': mul = 1e3;  pos++; break;
  40.             case 'M': mul = 1e6;  pos++; break;
  41.             case 'G': mul = 1e9;  pos++; break;
  42.         }
  43.         switch(buf[pos]) {
  44.             case 'g': mul *= 1; break;
  45.             case 'p': mul *= 16380; break;
  46.             case 't': mul *= 1e6; break;
  47.         }
  48.         sort_value = value * mul;
  49.     }
  50.     void output() {
  51.         printf("%d %s\n",value,unit.c_str());
  52.     }
  53. };
  54. bool operator < (const volume &a, const volume &b) {
  55.     return a.sort_value < b.sort_value;
  56. }
  57. vector<volume> mas;
  58. void input(){
  59.     scanf("%d", &n);
  60.     mas.resize(n);
  61.     for (int i=0;i<n;++i)
  62.         mas[i].input();
  63. }
  64. void output() {
  65.     for (int i=0;i<mas.size();++i)
  66.         mas[i].output();
  67. }
  68. int main()
  69. {
  70.     freopen("input.txt","r",stdin);
  71.     freopen("output.txt","w",stdout);
  72.  
  73.     input();
  74.     sort(mas.begin(), mas.end());
  75.     output();
  76.  
  77.     return 0;
  78. }


Editing is locked.