J. Sharing Chocolate
Prob S Sharing Chocolate olate Problem ID: choco d the world eveery day. It is a truly universall Chocolate in its many forrms is enjoyed by millions off people around candy, avaailable in virtuaally every counntry around thee world. i with friends. Unfortu...
Problem Statement
Formatted from the contest statement text, with sample tests broken out into copyable blocks.
d the world eveery day. It is a truly universall
Chocolate in its many forrms is enjoyed by millions off people around
candy, avaailable in virtuaally every counntry around thee world.
i with friends. Unfortunately
You find thhat the only thiing better than eating chocolaate is to share it y, your friends
are very piicky and have different appetites: some wouuld like more anda others less of the chocolate that you offe
them. You have found it increasingly diifficult to deterrmine whetherr their demandss can be met. Itt is time to writte
a program that solves thee problem oncee and for all!
Your chocoolate comes ass a rectangular bar. The bar coonsists of samee-sized rectanggular pieces. Too share the chocolate, you may breakk one bar into two b t pieces alonng a division between t bar. You rows oor columns of the may then repeatedly r g pieces in the ssame manner. Each of your ffriends insists on breaak the resulting o a getting a n of the chocollate that has a sspecified numbber of pieces. Y single rectaangular portion You are a little bit insistent ass w break up your well: you will y bar only iff all of it can bee distributed too your friends, with none left over.
For exampple, Figure 9 shhows one way thatt a chocolatee bar consisting of 3 × 4 pieeces can be spliit into 4 parts that containn 6, 3, 2, and 1 pieces respectively, by breaaking it 3 timess. (This correspponds to the firrst sample input.)
Figure 9Input
The input consists of mulltiple test casess, each describing a chocolatee bar to share. Each descriptiion starts with a line containning a single innteger n (1 ≤ n ≤ 15), the nummber of parts innto which the bbar is supposedd to be split. This is folllowed by a linee containing twwo integers x annd y (1 ≤ x, y ≤ 100), the dimmensions of the chocolate bar. The next liine contains n positive integeers, giving the nnumber of piecces that are suppposed to be inn each of the n parts.
i terminated by
The input is b a line containing the integeer zero.Output
For each teest case, first display its case number. Then display whethher it is possiblee to break the chocolate c in thhe desired waay: display “Ye es” if it is posssible, and “No”” otherwise. Foollow the formaat of the samplle output.
Sample In
nput e Input
Output forr the Sample
4 Case 1: Yes
3 4 Case 2: No
6 3 2 1
2
2 3
1 5
0
This page intentionally left blank.
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
Describe the data structures and the state maintained by the algorithm.
Explain the processing order and why it is sufficient.
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.
#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
competitive_programming/icpc/2010/J-sharing-chocolate/solution.texC++ implementationcompetitive_programming/icpc/2010/J-sharing-chocolate/solution.cppStatement textcompetitive_programming/icpc/2010/J-sharing-chocolate/statement.txtStatement PDFcompetitive_programming/icpc/2010/J-sharing-chocolate/statement.pdfMetadatacompetitive_programming/icpc/2010/J-sharing-chocolate/meta.jsonYear packetcompetitive_programming/icpc/2010/contest_problems.pdf