Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package olymp;
- import net.egork.utils.io.InputReader;
- import net.egork.utils.io.OutputWriter;
- public class RCC_B {
- public void solve(int testNumber, InputReader in, OutputWriter out) {
- int n = in.readInt();
- int[][] len1 = new int[n + 1][];
- int[][] len2 = new int[n + 1][];
- for (int i = 0; i < n; i++) {
- len1[i] = new int[i + 1];
- len2[i] = new int[i + 1];
- }
- for (int i = 0; i < n; i++) {
- for (int j = 0; j <= i; j++) {
- len1[i][j] = in.readInt();
- len2[i][j] = in.readInt();
- }
- }
- double[][] a = new double[n + 1][];
- double[][] p = new double[n + 1][];
- for (int i = 0; i <= n; i++) {
- a[i] = new double[i + 1];
- p[i] = new double[i + 1];
- }
- p[0][0] = 1;
- double ans = 0;
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < a[i].length; j++) {
- if (len1[i][j] < len2[i][j]) {
- a[i + 1][j] += len1[i][j] * p[i][j];
- p[i + 1][j] += p[i][j];
- } else if (len2[i][j] < len1[i][j]) {
- a[i + 1][j + 1] += len2[i][j] * p[i][j];
- p[i + 1][j + 1] += p[i][j];
- } else {
- a[i + 1][j] += len1[i][j] * p[i][j] * 0.5;
- a[i + 1][j + 1] += len2[i][j] * p[i][j] * 0.5;
- p[i + 1][j] += p[i][j] * 0.5;
- p[i + 1][j + 1] += p[i][j] * 0.5;
- }
- }
- for (int j = 0; j < a[i + 1].length; j++) {
- ans += a[i + 1][j];
- }
- }
- out.printLine(ans);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement