Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define F first
- #define S second
- #define ll long long
- #define ull unsigned long long
- #define ld long double
- #define SELO ""
- #define openfiles ifstream cin("input" SELO ".txt"); ofstream cout("output" SELO ".txt");
- #define faster ios_base::sync_with_stdio(NULL); cin.tie(0); cout.tie(0);
- #define all(x) x.begin(), x.end()
- using namespace std;
- int main()
- {
- openfiles
- int n;
- cin >> n;
- vector <ld> res_L(n), res_R(n), sum_L(n), sum_R(n);
- vector <pair <ld, ld> > y(n);
- for(int i = 0; i < n; i++)
- cin >> y[i].F >> y[i].S;
- sort(all(y));
- ll sum = 0, kol = 0;
- for(int i = 0; i < n; i++)
- {
- sum += y[i].S;
- kol += y[i].S * y[i].S;
- res_L[i] = (1.0 * sum) / (i + 1);
- sum_L[i] = (i + 1) * res_L[i] * res_L[i] - 2 * sum * res_L[i] + kol;
- }
- sum = 0, kol = 0;
- for(int i = 0; i < n; i++)
- {
- sum += y[n - 1 - i].S;
- kol += y[n - 1 - i].S * y[n - 1 - i].S;
- res_R[n - 1 - i] = 1.0 * sum / (1.0 * (i + 1));
- sum_R[n - 1 - i] = (i + 1) * res_R[n - 1 - i] * res_R[n - 1 - i] - 2 * sum * res_R[n - 1 - i] + kol;
- }
- ld ans = 1000000000000000000.0, l = -1, r = -1, c = 0;
- if(ans > sum_R[0])
- {
- ans = sum_R[0];
- l = 1.0;
- r = res_R[0];
- c = y[0].F - 0.5;
- }
- if(ans > sum_L[n - 1])
- {
- ans = sum_L[n - 1];
- l = res_L[n - 1];
- r = 1.0;
- c = y[n - 1].F + 0.5;
- }
- for(int i = 0; i < n - 1; i++)
- {
- if(abs(y[i + 1].F - y[i].F) <= 0.1)
- continue;
- if(ans > sum_L[i] + sum_R[i + 1])
- {
- ans = sum_L[i] + sum_R[i + 1];
- l = res_L[i];
- r = res_R[i + 1];
- c = y[i + 1].F - 0.5;
- }
- }
- cout << fixed << setprecision(20) << l << " " << r << " " << c;
- }
Advertisement
Add Comment
Please, Sign In to add comment