Submission details
Task:Aquarium
Sender:aalto25a_008
Submission time:2025-09-08 14:18:52 +0300
Language:C++ (C++20)
Status:READY
Result:
Test results
testverdicttime
#10.00 sdetails
#20.00 sdetails
#30.00 sdetails
#40.00 sdetails
#50.00 sdetails
#60.00 sdetails
#70.00 sdetails
#80.00 sdetails
#90.00 sdetails
#100.00 sdetails
#110.00 sdetails
#120.00 sdetails
#130.00 sdetails
#140.00 sdetails
#150.00 sdetails
#160.00 sdetails
#170.00 sdetails
#180.00 sdetails
#190.00 sdetails
#200.00 sdetails
#210.00 sdetails
#220.00 sdetails
#230.00 sdetails
#240.00 sdetails
#250.00 sdetails
#260.00 sdetails
#270.00 sdetails
#280.00 sdetails
#290.00 sdetails
#300.00 sdetails
#310.00 sdetails
#320.00 sdetails
#330.00 sdetails
#340.00 sdetails
#350.00 sdetails
#360.00 sdetails
#370.00 sdetails
#380.00 sdetails
#390.00 sdetails
#400.00 sdetails
#410.00 sdetails
#420.00 sdetails
#430.00 sdetails
#440.00 sdetails

Code

#include <bits/stdc++.h>
using namespace std;

int n, q;
long double V;
vector<long double> h;

long double computeVolume(long double W, int q) {
    long double vol = 0.0;
    int L = q - 1, R = q - 1; // convert to 0-based
    long double leftMin = h[L], rightMin = h[R];

    // expand left
    for (int i = L; i >= 0; --i) {
        leftMin = min(leftMin, h[i]);
        long double level = min(W, leftMin);
        if (level > h[i]) vol += (level - h[i]);
    }

    // expand right
    for (int i = R; i < n; ++i) {
        rightMin = min(rightMin, h[i]);
        long double level = min(W, rightMin);
        if (level > h[i]) vol += (level - h[i]);
    }

    return vol;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> n;
    h.resize(n);
    for (int i = 0; i < n; i++) cin >> h[i];
    cin >> q >> V;

    // binary search on water level
    long double low = h[q - 1], high = *max_element(h.begin(), h.end()) + V;
    for (int iter = 0; iter < 100; iter++) { // sufficient precision
        long double mid = (low + high) / 2.0;
        if (computeVolume(mid, q) < V)
            low = mid;
        else
            high = mid;
    }

    cout << fixed << setprecision(5) << (low + high) / 2.0 << "\n";
    return 0;
}

Test details

Test 1

Verdict:

input
1

1 1

correct output
1

user output
2.00000

Test 2

Verdict:

input
2
1 2 
1 1

correct output
1

user output
3.00000

Test 3

Verdict:

input
3
1 1 3 
2 7

correct output
1

user output
10.00000

Test 4

Verdict:

input
5
1 1 5 3 5 
3 6

correct output
5

user output
11.00000

Test 5

Verdict:

input
6
5 3 1 2 4 6 
3 4

correct output
2

user output
10.00000

Test 6

Verdict:

input
8
7 5 3 1 2 4 6 8 
4 7

correct output
3

user output
15.00000

Test 7

Verdict:

input
9
2 1 9 5 9 4 5 4 3 
4 5

correct output
5

user output
14.00000

Test 8

Verdict:

input
10
9 7 5 3 1 2 4 6 8 10 
5 11

correct output
3.66667

user output
21.00000

Test 9

Verdict:

input
12
11 9 7 5 3 1 2 4 6 8 10 12 
6 16

correct output
4

user output
28.00000

Test 10

Verdict:

input
14
13 11 9 7 5 3 1 2 4 6 8 10 12 ...

correct output
5

user output
36.00000

Test 11

Verdict:

input
16
15 13 11 9 7 5 3 1 2 4 6 8 10 ...

correct output
5.6

user output
44.00000

Test 12

Verdict:

input
18
17 15 13 11 9 7 5 3 1 2 4 6 8 ...

correct output
6

user output
54.00000

Test 13

Verdict:

input
20
19 17 15 13 11 9 7 5 3 1 2 4 6...

correct output
7

user output
64.00000

Test 14

Verdict:

input
25
5 1 24 14 24 11 13 11 9 9 4 6 ...

correct output
6

user output
35.00000

Test 15

Verdict:

input
30
29 27 25 23 21 19 17 15 13 11 ...

correct output
10

user output
129.00000

Test 16

Verdict:

input
40
39 37 35 33 31 29 27 25 23 21 ...

correct output
13.4615

user output
215.00000

Test 17

Verdict:

input
50
49 47 45 43 41 39 37 35 33 31 ...

correct output
17

user output
323.00000

Test 18

Verdict:

input
70
69 67 65 63 61 59 57 55 53 51 ...

correct output
23.2609

user output
605.00000

Test 19

Verdict:

input
1

1 1

correct output
1

user output
2.00000

Test 20

Verdict:

input
2
3 2 
1 16

correct output
3

user output
19.00000

Test 21

Verdict:

input
3
6 4 3 
3 81

correct output
3

user output
87.00000

Test 22

Verdict:

input
5
14 8 5 24 16 
5 625

correct output
16

user output
649.00000

Test 23

Verdict:

input
6
19 11 6 34 23 35 
3 1296

correct output
19

user output
1331.00000

Test 24

Verdict:

input
8
32 18 9 61 39 62 32 35 
4 4096

correct output
61

user output
4158.00000

Test 25

Verdict:

input
9
40 22 10 77 49 78 40 44 39 
3 6561

correct output
40

user output
6639.00000

Test 26

Verdict:

input
10
49 26 12 94 60 96 49 54 48 39 
4 10000

correct output
94

user output
10096.00000

Test 27

Verdict:

input
12
69 36 15 135 85 138 69 76 67 5...

correct output
69

user output
20874.00000

Test 28

Verdict:

input
14
93 47 18 184 114 187 93 102 90...

correct output
141

user output
38603.00000

Test 29

Verdict:

input
16
121 60 22 240 148 244 120 132 ...

correct output
240

user output
65780.00000

Test 30

Verdict:

input
18
151 74 25 303 186 308 151 166 ...

correct output
303

user output
105284.00000

Test 31

Verdict:

input
20
186 90 29 374 229 381 185 204 ...

correct output
286

user output
160381.00000

Test 32

Verdict:

input
25
287 136 40 584 355 594 286 316...

correct output
516

user output
391219.00000

Test 33

Verdict:

input
30
409 191 52 841 508 855 409 452...

correct output
656

user output
810855.00000

Test 34

Verdict:

input
40
720 328 80 1494 898 1519 719 7...

correct output
1519

user output
2561553.00000

Test 35

Verdict:

input
50
1118 503 113 2333 1397 2372 11...

correct output
2372

user output
6252426.00000

Test 36

Verdict:

input
70
2176 964 195 4570 2725 4648 21...

correct output
4648

user output
24014754.00000

Test 37

Verdict:

input
100
4416 1932 356 9323 5542 9483 4...

correct output
9700

user output
100009934.00000

Test 38

Verdict:

input
500
104548 249301 180224 233177 52...

correct output
104548

user output
62500249764.00000

Test 39

Verdict:

input
600
150482 358999 259492 335771 64...

correct output
353835

user output
129600359666.00000

Test 40

Verdict:

input
900
446578 58127 573897 680544 236...

correct output
790626

user output
656100809190.00000

Test 41

Verdict:

input
900
783372 729637 443692 140636 78...

correct output
805592

user output
656100808446.00000

Test 42

Verdict:

input
100
4416 1932 356 9323 5542 9483 4...

correct output
9700

user output
100009934.00000

Test 43

Verdict:

input
500
104548 249301 180224 233177 52...

correct output
104548

user output
62500249764.00000

Test 44

Verdict:

input
600
150482 358999 259492 335771 64...

correct output
353835

user output
129600359666.00000