Maximum Sum (APCS 2016-10 Intermediate)

Points 100 1.0s 256M

You are given \(N\) groups of numbers, each containing exactly \(M\) positive integers. Choose one number from every group. If the number chosen from group \(i\) is \(t_i\), their sum is

\[S=t_1+t_2+\cdots+t_N.\]

First maximize \(S\). Then determine which chosen numbers divide \(S\).

Input Format

The first line contains two positive integers \(N\) and \(M\).

Each of the next \(N\) lines contains \(M\) positive integers representing one group.

Constraints

  • \(1 \le N \le 20\)
  • \(1 \le M \le 20\)
  • Every input number \(x\) satisfies \(1 \le x \le 256\).
  • All input values are integers.

Output Format

Print the maximum sum \(S\) on the first line.

On the second line, in group order, print every chosen number that divides \(S\). Separate adjacent numbers by one space and do not print trailing spaces.

If none of the chosen numbers divides \(S\), print -1 on the second line.

Only numbers actually chosen from their groups are checked. If the same value is chosen from different groups, print it once for each such group. Output is judged by exact match.

Scoring

The two samples are judged but worth zero points. There are exactly \(20\) scored groups worth \(5\) points each:

  • Groups \(1\)–\(4\) (\(20\) points): \(M=1\).
  • Groups \(5\)–\(10\) (\(30\) points): \(M=2\).
  • Groups \(11\)–\(20\) (\(50\) points): no additional constraints.

Sample Input 1

3 2
1 5
6 4
1 1

Sample Output 1

12
6 1

Sample Explanation 1

The chosen values are \(5,6,1\), so the maximum sum is \(S=12\). Values \(6\) and \(1\) divide \(12\), and they are printed in group order.

Sample Input 2

4 3
6 3 2
2 7 9
4 7 1
9 5 3

Sample Output 2

31
-1

Sample Explanation 2

The chosen values are \(6,9,7,9\), giving \(S=31\). None of them divides \(31\).

Source

APCS October 2016, implementation problem 2; adapted from ZeroJudge c295, “Maximum Sum”.

Problem page help

Keyboard shortcuts

Main features

  • Sample tests — Runs the sample cases bundled with the problem and auto-compares against the expected output.
  • Custom test — Run your code with your own stdin. Optionally tick the "Compare with expected (diff)" box to verify against expected output line-by-line.
  • Template — Paste the default code template you set on your profile page.
  • Collab — Edit this problem together with classmates in real time.
  • Auto-draft — Editor contents auto-save to your browser every 1.5 seconds (per account / problem / language).
  • Submit — Send your code to the judge for grading; returns AC / WA / TLE etc.

Limits

  • Source code: at most 65,536 characters
  • Custom test stdin and expected output: at most 1 MB each (≈1 million characters)
  • Custom test and sample test share the sandbox; about 1 request per 3 s per user (sample test: 1 per 1 s)
  • Custom test and sample test both have a 15 second wall-clock cap (the official judge still uses the problem time limit)
  • Interactive problems do not offer custom test (cannot simulate interaction with the judge).
  • Submitting has no rate limit, but rapid repeated submissions on the same problem are treated as score farming.