Advertisement
Guest User

Untitled

a guest
May 21st, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cmath>
  4. #include <string>
  5. #include <cstdlib>
  6. #include <vector>
  7. #include <queue>
  8. #include <set>
  9. #include <map>
  10. #include <cstdio>
  11. #include <iomanip>
  12.  
  13. #define SWS ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
  14. #define pb push_back
  15. #define ppb pop_back
  16. #define ft first
  17. #define sd second
  18. #define read freopen("input.txt", "r", stdin)
  19. #define write freopen("output.txt", "w", stdout)
  20. #define files read; write
  21.  
  22. using namespace std;
  23.  
  24. typedef long long ll;
  25. typedef pair<int, int> pii;
  26.  
  27. const int Z = (int)5e3 + 228;
  28. const int N = (int)2e5 + 228;
  29. const int INF = (int)1e9 + 228;
  30. const int MOD = (int)1e9 + 7;
  31.  
  32. int convert(string& s)
  33. {
  34. int res = 0, pos, n = s.length();
  35. for (int i = 0; i < n; i++)
  36. if (s[i] >= '0' && s[i] <= '9') res = res * 10 + (int)(s[i] - '0');
  37. else
  38. {
  39. pos = i;
  40. break;
  41. }
  42. string t = s.substr(pos, n - pos);
  43. int x;
  44. if (t == "mile") x = 1609;
  45. if (t == "km") x = 1000;
  46. if (t == "uin") x = 33;
  47. if (t == "kairi") x = 1852;
  48. if (t == "zhang") x = 3;
  49. if (t == "sen") x = 38;
  50. return res * x;
  51. }
  52.  
  53. bool check(int a, int b, int c)
  54. {
  55. int sum = a + b + c;
  56. int mx = max(a, max(b, c));
  57. return mx < sum - mx;
  58. }
  59.  
  60. double get_square(double a, double b, double c)
  61. {
  62. double p = (a + b + c) / 2;
  63. return sqrt(p * (p - a) * (p - b) * (p - c));
  64. }
  65.  
  66. int main()
  67. {
  68. SWS;
  69. //files;
  70. int n;
  71. cin >> n;
  72. vector<pii> a;
  73. for (int i = 0; i < n; i++)
  74. {
  75. string s;
  76. cin >> s;
  77. int x = convert(s);
  78. a.pb({x, i});
  79. }
  80. sort(a.begin(), a.end());
  81. double ans = 0;
  82. int num1, num2, num3;
  83. for (int i = 0; i < n; i++)
  84. if (i + 2 < n)
  85. if (check(a[i].ft, a[i + 1].ft, a[i + 2].ft))
  86. if (get_square((double)a[i].ft, (double)a[i + 1].ft, (double)a[i + 2].ft) > ans)
  87. {
  88. ans = get_square((double)a[i].ft, (double)a[i + 1].ft, (double)a[i + 2].ft);
  89. num1 = a[i].sd + 1;
  90. num2 = a[i + 1].sd + 1;
  91. num3 = a[i + 2].sd + 1;
  92. //if (num1 == 7 && num2 == 1 && num3 == 5)
  93. // cout << a[i].ft << ' ' << a[i + 1].ft << ' ' << a[i + 2].ft << endl;
  94. }
  95. cout << fixed << setprecision(30) << ans / 4 << "\n";
  96. cout << num1 << ' ' << num2 << ' ' << num3;
  97. return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement