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
Seems I keep getting TLE on batch 2 with the
approach introduced in the editorial. Any way to optimize it?
Update: just figured out an
solution and passed.
My solution is also O(N^2logK) but it TLEd :(
any help would be appreciated
This problem needs faster I/O. Try adding
to your code.
Wow, I resubmitted my old solution with fast I/O and it worked. I never would have guessed.
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.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):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?
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.
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?
CCC Grader is too fast and the data seems to be not strong enough to break this solution.
Your solution is
which cannot pass when 
CCCGrader is just stupid fast
I just tried submitting an
DP solution, and it passes.
This is due to the new judges. It looks like we need to adjust the time limit.
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.
You recur too many times(RecursionError).
Thanks