Submission #1236405

#TimeUsernameProblemLanguageResultExecution timeMemory
1236405MinhKienBalloons (CEOI11_bal)C++20
30 / 100
743 ms1924 KiB
#include <iostream> #include <stdio.h> #include <math.h> using namespace std; int n; long double x, y, a, b; long double xl = -1, al; long double xl2 = -1, al2; long double xl3 = -1, al3; long double xl4 = -1, al4; long double xl5 = -1, al5; long double xl6 = -1, al6; long double xl7 = -1, al7; long double xl8 = -1, al8; long double dis(long double m) { long double p = sqrt((x - a) * (x - a) + (m - y) * (m - y)); return p; } long double dis2(long double m) { return sqrt((a - xl) * (a - xl) + (m - al) * (m - al)); } long double dis3(long double m) { return sqrt((a - xl2) * (a - xl2) + (m - al2) * (m - al2)); } long double dis4(long double m) { return sqrt((a - xl3) * (a - xl3) + (m - al3) * (m - al3)); } long double dis5(long double m) { return sqrt((a - xl4) * (a - xl4) + (m - al4) * (m - al4)); } long double dis6(long double m) { return sqrt((a - xl5) * (a - xl5) + (m - al5) * (m - al5)); } long double dis7(long double m) { return sqrt((a - xl6) * (a - xl6) + (m - al6) * (m - al6)); } long double dis8(long double m) { return sqrt((a - xl7) * (a - xl7) + (m - al7) * (m - al7)); } long double dis9(long double m) { return sqrt((a - xl8) * (a - xl8) + (m - al8) * (m - al8)); } long double Find() { long double l = 0, r = b, ans = 0; for (int i = 1; i <= 100; ++i) { long double m = (l + r) / 2.0; if (dis(m) >= y + m) { if (xl == -1 || dis2(m) >= al + m) { if (xl2 == -1 || dis3(m) >= al2 + m) { if (xl3 == -1 || dis4(m) >= al3 + m) { if (xl4 == -1 || dis5(m) >= al4 + m) { if (xl5 == -1 || dis6(m) >= al5 + m) { if (xl6 == -1 || dis7(m) >= al6 + m) { if (xl7 == -1 || dis8(m) >= al7 + m) { if (xl8 == -1 || dis9(m) >= al8 + m) { ans = m; l = m; } else r = m; } else r = m; } else r = m; } else r = m; } else r = m; } else r = m; } else r = m; } else r = m; } else r = m; } return ans; } int main() { cin.tie(nullptr); cout.tie(nullptr); ios_base::sync_with_stdio(false); cin >> n; x = -1e9; y = 0; for (int i = 1; i <= n; ++i) { cin >> a >> b; long double ans = Find(); printf("%.3Lf\n", ans); xl8 = xl7; al8 = al7; xl7 = xl6; al7 = al6; xl6 = xl5; al6 = al5; xl5 = xl4; al5 = al4; xl4 = xl3; al4 = al3; xl3 = xl2; al3 = al2; xl2 = xl; al2 = al; xl = a; al = ans; if (abs(a + ans - x - y) <= 1e-10) continue; if (a + ans > x + y) { x = a; y = ans; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...