ICPC 2015
ICPC 2015

C. Catering

Paul owns a catering company and business is booming. The com- pany has k catering teams, each in charge of one set of catering equip- ment. Every week, the company accepts n catering requests for var- ious events. For every request, they send a catering te...

Updated May 21, 2026
Track ICPC
Year 2015
Statement Text + PDF
TeXC++Statement textStatement PDF

Problem Statement

Formatted from the contest statement text, with sample tests broken out into copyable blocks.

Time limit 4 seconds
Paul owns a catering company and business is booming. The com-
pany has k catering teams, each in charge of one set of catering equip-
ment. Every week, the company accepts n catering requests for var-
ious events. For every request, they send a catering team with their
equipment to the event location. The team delivers the food, sets up
the equipment, and instructs the host on how to use the equipment and
serve the food. After the event, the host is responsible for returning the
equipment back to Paul’s company.
Unfortunately, in some weeks the number of catering teams is less than
the number of requests, so some teams may have to be used for more
than one event. In these cases, the company cannot wait for the host
                                                                                       Picture from Wikimedia Commons
to return the equipment and must keep the team on-site to move the
equipment to another location. The company has an accurate estimate of the cost to move a set of
equipment from any location to any other location. Given these costs, Paul wants to prepare an Advance
Catering Map to service the requests while minimizing the total moving cost of equipment (including
the cost of the first move), even if that means not using all the available teams. Paul needs your help to
write a program to accomplish this task. The requests are sorted in ascending order of their event times
and they are chosen in such a way that for any i < j, there is enough time to transport the equipment
used in the ith request to the location of the j th request.

Input

The first line of input contains two integers n (1 ≤ n ≤ 100) and k (1 ≤ k ≤ 100) which are the number of requests and the number of catering teams, respectively. Following that are n lines, where the ith line contains n − i + 1 integers between 0 and 1 000 000 inclusive. The j th number in the ith line is the cost of moving a set of equipment from location i to location i + j. The company is at location 1 and the n requests are at locations 2 to n + 1.

Output

Display the minimum moving cost to service all requests. (This amount does not include the cost of moving the equipment back to the catering company.)

Sample Tests

Sample 1
Sample Input
 3 2
 40 30 40
 50 10
 50
Sample Output
80
Sample 2
Sample Input
3 2
10 10 10
20 21
21
Sample Output
40

Editorial

The solution write-up is rendered from the LaTeX source, with equations kept live through MathJax.

Key Observations

  • Write the structural observations that make the problem tractable.

  • State any useful invariant, monotonicity property, graph interpretation, or combinatorial reformulation.

  • If the constraints matter, explain exactly which part of the solution they enable.

Algorithm

  1. Describe the data structures and the state maintained by the algorithm.

  2. Explain the processing order and why it is sufficient.

  3. Mention corner cases explicitly if they affect the implementation.

Correctness Proof

We prove that the algorithm returns the correct answer.

Lemma 1.

State the first key claim.

Proof.

Provide a concise proof.

Lemma 2.

State the next claim if needed.

Proof.

Provide a concise proof.

Theorem.

The algorithm outputs the correct answer for every valid input.

Proof.

Combine the lemmas and finish the argument.

Complexity Analysis

State the running time and memory usage in terms of the input size.

Implementation Notes

  • Mention any non-obvious implementation detail that is easy to get wrong.

  • Mention numeric limits, indexing conventions, or tie-breaking rules if relevant.

Code

C++ solution used for this page.

C++

Clean code view with a raw-file link when you want the original source.

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

namespace {

void solve() {
    // Fill in the full solution logic for the problem here.
}

}  // namespace

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

    solve();
    return 0;
}

Source Files and Assets

Raw files are still available here when you want the original TeX, C++, or statement assets.

Show raw files