CCC '21 S1 - Crazy Fencing

View as PDF

Submit solution


Points: 5 (partial)
Time limit: 1.0s
Memory limit: 1G

Problem type
Canadian Computing Competition: 2021 Stage 1, Senior #1

You need to paint a wooden fence between your house and your neighbour's house. You want to determine the area of the fence, in order to determine how much paint you will use. However, the fence is made out of N non-uniform pieces of wood, and your neighbour believes that they have an artistic flair. In particular, the pieces of wood may be of various widths. The bottom of each piece of wood will be horizontal, both sides will be vertical, but its top may be cut on an angle. Two such pieces of wood are shown below:

Thankfully, the fence has been constructed so that adjacent pieces of wood have the same height on the sides where they touch, which makes the fence more visually appealing.

Input Specification

The first line of the input will be a positive integer N, where N \le 10\,000.

The second line of input will contain N+1 space-separated integers h_1, \dots, h_{N+1} (1 \le h_i \le 100, 1 \le i \le N+1) describing the left and right heights of each piece of wood. Specifically, the left height of the i^\text{th} piece of wood is h_i and the right height of the i^\text{th} piece of wood is h_{i+1}.

The third line of input will contain N space-separated integers w_i (1 \le w_i \le 100, 1 \le i \le N) describing the width of the i^\text{th} piece of wood.

Output Specification

Output the total area of the fence. If the correct answer is C, the grader will view A correct if |A-C| \le 10^{-6}.

Sample Input 1

3
2 3 6 2
4 1 1

Output for Sample Input 1

18.5

Explanation of Output for Sample Input 1

The fence looks like the following:

When looking from left to right, the individual areas of the pieces of wood are 10 = 4 \cdot (2+3)/2, 4.5 = 1 \cdot (3+6)/2, and 4 = 1 \cdot (6+2)/2, for a total area of 18.5.

Sample Input 2

4
6 4 9 7 3
5 2 4 1

Output for Sample Input 2

75

Explanation of Output for Sample Input 2

The fence looks like the following:

When looking from left to right, the individual areas of the pieces of wood are 25, 13, 32, and 5, for a total area of 75.


Comments


  • 14
    HOPE  commented on May 25, 2021, 1:31 p.m.

    I actually found the solution and anyone who will code this in c++ will probably also need it.

    Instead of printing the answer like this:

    cout << area;

    do this...

    cout << fixed << area;

    The fixed function will keep it from turning into scientific notation: 5.789E13


    • 0
      theOldSheep  commented on July 22, 2021, 6:57 p.m.

      I think printf("%.1f", area) also works :)


    • 1
      antboi  commented on June 27, 2021, 6:25 p.m.

      Saved me from hours of malding o7


    • 0
      JustinFan591  commented on May 30, 2021, 1:59 p.m.

      Dude this really helped out a lot!!


    • 5
      EpicChadGamer  commented on May 25, 2021, 4:25 p.m.

      ORRRZZZZZ HOPE


  • 0
    HOPE  commented on May 25, 2021, 1:12 p.m. edited

    I'm very confused right now. My code easily passes all the test cases but can't do #7 or #8. I converted my double to long double to fix it, but it hasn't at all. If it's not that, is doing it in time, and seems to work for every other question, why is it not working for this one?


    • 0
      lx599999  commented on Oct. 10, 2021, 12:13 a.m. edit 2

      eh, i change cout.precision(10) and used long double, its unecessary but it passed ok.


  • -5
    kujiyh  commented on April 21, 2021, 9:35 p.m.

    This comment is hidden due to too much negative feedback. Click here to view it.


    • 2
      vichua2006  commented on July 31, 2021, 10:20 a.m.

      because it's worth 5 points