## CCC '19 S5 - Triangle: The Data Structure

View as PDF

Points: 20 (partial)
Time limit: 1.0s
Memory limit: 512M

Author:
Problem type
##### Canadian Computing Competition: 2019 Stage 1, Senior #5

In a parallel universe, the most important data structure in computer science is the triangle. A triangle of size consists of rows, with the row containing elements. Furthermore, these rows must be arranged to form the shape of an equilateral triangle. That is, each row is centred around a vertical line of symmetry through the middle of the triangle. For example, the diagram below shows a triangle of size 4:

A triangle contains sub-triangles. For example, the triangle above contains ten sub-triangles of size 1, six sub-triangles of size 2 (two of which are the triangle containing and the triangle containing ), three sub-triangles of size 3 (one of which contains ). Note that every triangle is a sub-triangle of itself.

You are given a triangle of size and must find the sum of the maximum elements of every sub-triangle of size .

#### Input Specification

The first line contains two space-separated integers and ().

Following this are lines describing the triangle. The of these lines contains space-separated integers (), representing the row of the triangle.

For 4 of the 15 available marks, .

#### Output Specification

Output the integer sum of the maximum elements of every sub-triangle of size .

#### Sample Input

4 2
3
1 2
4 2 1
6 1 4 2

#### Output for Sample Input

23

## Comments

• commented on Oct. 19, 2020, 11:22 a.m. edit 3

Seems I keep getting TLE on batch 2 with the approach introduced in the editorial. Any way to optimize it?

Update: just figured out a solution and passed.

• commented on May 30, 2021, 3:05 p.m.

My solution is also O(N^2logK) but it TLEd :(

any help would be appreciated

• commented on May 30, 2021, 6:16 p.m.

This problem needs fast I/O. Try adding

cin.sync_with_stdio(0); cin.tie(0); cout.tie(0);

to your code.

• commented on May 30, 2021, 8:41 p.m.

According to this codeforces blog, cout.tie(0) has no effect because cout is already tied to NULL. I briefly tested it myself and it seems to check out.

• commented on Aug. 15, 2020, 12:17 p.m. edit 6

Can java have a language specific limit, since bufferedReader takes 0.5s (half the given runtime) to take input in the worst case?

EDIT: Solved it after like 60 submissions. The input is stupidly large, but you can get past it using System.in.read instead of regular Buffered Reader (alternatively, you can be good at coding and have a proper solution that easily passes, but if you're bad like me this MIGHT do the trick):

public static int readIntFASTAF() throws IOException {
int ans = 0;
while(true) {
int next = System.in.read();
if(next == -1) break;
if(next == 32) break;
if(next == 10) break;

ans *= 10;
ans += next-48;
}
return ans;
}
• commented on Sept. 3, 2020, 2:42 p.m.

Does java have the equivalent of a `get line' function that reads in a line of char, w/o any parsing?

What's the runtime of that when reading the 3000 lines of the input file?

• commented on Sept. 3, 2020, 4:00 p.m.

is System.in.read() what you meant? That's the one I reccomended over buffered reader here. Bufferedreader takes 0.5s, but system.in.read takes ~0.2s with the above function.

• commented on Jan. 14, 2020, 9:36 p.m.

I can't seem to have my code get full points, I keep getting TLE on Batch 3 Case 3. This is despite having the CCCgrader pass my code? Can anyone help?

• commented on Jan. 14, 2020, 10:01 p.m.

CCC Grader is too fast and the data seems to be not strong enough to break this solution.

• commented on Jan. 14, 2020, 10:00 p.m. edited

Your solution is which cannot pass when

CCCGrader is just stupid fast

• commented on March 12, 2020, 2:15 a.m.

I just tried submitting an DP solution, and it passes.

• commented on March 12, 2020, 9:13 a.m.

This is due to the new judges. It looks like we need to adjust the time limit.

• commented on Sept. 26, 2019, 7:33 p.m.

Is there a specific reason as to why I might get an IR in python 3. It doesn't actually tell me what went wrong although the status codes indicate it should.

• commented on Sept. 27, 2019, 5:42 p.m.

You recur too many times(RecursionError).

• commented on Sept. 28, 2019, 10:01 a.m.

Thanks

• commented on March 21, 2019, 6:20 p.m.

triangule should be triangle

• commented on March 21, 2019, 6:21 p.m. edited

Fixed, thanks for pointing that out!