Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <cmath>
- #include <string>
- #include <cstdlib>
- #include <vector>
- #include <queue>
- #include <set>
- #include <map>
- #include <cstdio>
- #include <iomanip>
- #define SWS ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
- #define pb push_back
- #define ppb pop_back
- #define ft first
- #define sd second
- #define read freopen("input.txt", "r", stdin)
- #define write freopen("output.txt", "w", stdout)
- #define files read; write
- using namespace std;
- typedef long long ll;
- typedef pair<int, int> pii;
- const int Z = (int)5e3 + 228;
- const int N = (int)2e5 + 228;
- const int INF = (int)1e9 + 228;
- const int MOD = (int)1e9 + 7;
- int convert(string& s)
- {
- int res = 0, pos, n = s.length();
- for (int i = 0; i < n; i++)
- if (s[i] >= '0' && s[i] <= '9') res = res * 10 + (int)(s[i] - '0');
- else
- {
- pos = i;
- break;
- }
- string t = s.substr(pos, n - pos);
- int x;
- if (t == "mile") x = 1609;
- if (t == "km") x = 1000;
- if (t == "uin") x = 33;
- if (t == "kairi") x = 1852;
- if (t == "zhang") x = 3;
- if (t == "sen") x = 38;
- return res * x;
- }
- bool check(int a, int b, int c)
- {
- int sum = a + b + c;
- int mx = max(a, max(b, c));
- return mx < sum - mx;
- }
- double get_square(double a, double b, double c)
- {
- double p = (a + b + c) / 2;
- return sqrt(p * (p - a) * (p - b) * (p - c));
- }
- int main()
- {
- SWS;
- //files;
- int n;
- cin >> n;
- vector<pii> a;
- for (int i = 0; i < n; i++)
- {
- string s;
- cin >> s;
- int x = convert(s);
- a.pb({x, i});
- }
- sort(a.begin(), a.end());
- double ans = 0;
- int num1, num2, num3;
- for (int i = 0; i < n; i++)
- if (i + 2 < n)
- if (check(a[i].ft, a[i + 1].ft, a[i + 2].ft))
- if (get_square((double)a[i].ft, (double)a[i + 1].ft, (double)a[i + 2].ft) > ans)
- {
- ans = get_square((double)a[i].ft, (double)a[i + 1].ft, (double)a[i + 2].ft);
- num1 = a[i].sd + 1;
- num2 = a[i + 1].sd + 1;
- num3 = a[i + 2].sd + 1;
- //if (num1 == 7 && num2 == 1 && num3 == 5)
- // cout << a[i].ft << ' ' << a[i + 1].ft << ' ' << a[i + 2].ft << endl;
- }
- cout << fixed << setprecision(30) << ans / 4 << "\n";
- cout << num1 << ' ' << num2 << ' ' << num3;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement