Sphere Online Judge

SPOJ Problem Set (classical)

181. Scuba diver

Problem code: SCUBADIV

A scuba diver uses a special equipment for diving. He has a cylinder with two containers: one with oxygen and the other with nitrogen. Depending on the time he wants to stay under water and the depth of diving the scuba diver needs various amount of oxygen and nitrogen. The scuba diver has at his disposal a certain number of cylinders. Each cylinder can be described by its weight and the volume of gas it contains. In order to complete his task the scuba diver needs specific amount of oxygen and nitrogen. What is the minimal total weight of cylinders he has to take to complete the task?


The scuba diver has at his disposal 5 cylinders described below. Each description consists of: volume of oxygen, volume of nitrogen (both values are given in litres) and weight of the cylinder (given in decagrams):

3 36 120
10 25 129
5 50 250
1 45 130
4 20 119

If the scuba diver needs 5 litres of oxygen and 60 litres of nitrogen then he has to take two cylinders of total weight 249 (for example the first and the second ones or the fourth and the fifth ones).


Write a program that for each test case:

  • reads scuba diver's demand for oxygen and nitrogen, the number of accessible cylinders and their descriptions;
  • computes the minimal total weight of cylinders the scuba diver needs to complete his task;
  • outputs the result.

Note: the given set of cylinders always allows to complete the given task.


The number of test cases c is in the first line of input, then c test cases follow separated by an empty line.

In the first line of a test case there are two integers t, a separated by a single space, 1 <= t <= 21 and 1 <= a <= 79. They denote volumes of oxygen and nitrogen respectively, needed to complete the task. The second line contains one integer n, 1 <= n <= 1000, which is the number of accessible cylinders. The following n lines contain descriptions of cylinders; i-th line contains three integers ti, ai, wi separated by single spaces, (1 <= ti <= 21, 1 <= ai <= 79, 1 <= wi <= 800). These are respectively: volume of oxygen and nitrogen in the i-th cylinder and the weight of this cylinder.


For each test case your program should output one line with the minimal total weight of cylinders the scuba diver should take to complete the task.


Sample input:
5 60
3 36 120
10 25 129
5 50 250
1 45 130
4 20 119

Sample output:

Added by:Micha│ Czuczman
Time limit:5s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel Pentium G860 3GHz)
Resource:5th Polish Olympiad in Informatics, stage 2

hide comments
2014-10-05 20:02:24 SHIVAM DIXIT
the oxygen and nitrogen can be as large as 400 ...the given constraints are wrong...
2014-09-14 19:10:02 j1k7_7(JaskamalKainth)
After solving this, solve Dab of Backpack. :D
2014-08-12 17:29:38 mohsin mohammad
Knapsack Cormen :)
2014-06-30 19:52:53 |RAMžDEN|
volume of oxygen may be greater than 21
4 wa due to that
2014-06-06 12:21:10 Pratik kumar
Nice Question.......knapsacking the solution
2014-01-23 21:31:02 paras meena
Nice..Problem :)
2013-09-06 14:34:24 TYAGI
2013-05-20 12:31:10 anuj kumar jain
recursion gave me tle....but same logic when implemented by looping got accepted...:)))
2013-01-20 04:59:54 Dane
knapsack with little modification
2012-07-30 10:50:41 akb
nice pblm,just find out analogue...
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.