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


  • 0
    Joel_M  commented on Jan. 22, 2024, 4:21 a.m.

    Not Including the inputs, this can be done in 1 line in python


    • 0
      Joel_M  commented on Jan. 22, 2024, 4:26 a.m.

      U can get away with not using the first input


  • 1
    darek  commented on Feb. 21, 2022, 12:15 p.m. edit 4

    I have run the 'best' Python 3 solution (ID: 4226630, Jan. 20, 2022) for sample 2 and the output is 75.0 (float), not the int (75) as shown in the sample 2 output...How come?


    • 5
      henrybaolol9  commented on Feb. 21, 2022, 4:33 p.m.

      an int output is not required


      • 1
        darek  commented on Feb. 21, 2022, 4:56 p.m.

        Apparently the tests do not validate that then.


  • 41
    HOPE  commented on May 25, 2021, 5:31 p.m. edited

    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


    • 2
      kopichiki  commented on Aug. 12, 2022, 6:05 p.m. edited

      Also, setprecision in C++ allows you to choose how many decimal places you want in the float/double output.


    • 8
      theOldSheep  commented on July 22, 2021, 10:57 p.m. edited

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


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

      Saved me from hours of malding o7


    • 2
      JustinFan591  commented on May 30, 2021, 5:59 p.m.

      Dude this really helped out a lot!!


    • 6
      EpicChadGamer  commented on May 25, 2021, 8:25 p.m.

      ORRRZZZZZ HOPE