ABA12C - Buying Apples!

Harish went to a supermarket to buy exactly ‘k’ kilograms apples for his ‘n’ friends. The supermarket was really weird. The pricing of items was very different. He went to the Apples section and enquired about the prices. The salesman gave him a card in which he found that the prices of apples were not per kg. The apples were packed into covers, each containing ‘x’ kg of apples, x > 0 and ‘x’ is an integer. An ‘x’ kg packet would be valued at ‘y’ rupees. So, the placard contained a table with an entry ‘y’ denoting the price of an ‘x’ kg packet. If ‘y’ is -1 it means that the corresponding packet is not available. Now as apples are available only in packets, he decides to buy atmost ‘n’ packets for his ‘n’ friends i.e he will not buy more than n packets of apples.

Harish likes his friends a lot and so he does not want to disappoint his friends. So now, he will tell you how many friends he has and you have to tell him the minimum amount of money he has to spend for his friends.


The first line of input will contain the number of test cases, C.

Each test case will contain two lines.

The first line containing N and K, the number of friends he has and the amount of Apples in kilograms which he should buy.

The second line contains K space separated integers in which the ith integer specifies the price of a ‘i’kg apple packet. A value of -1 denotes that the corresponding packet is unavailable.

  • 0 < N <= 100
  • 0 < K <= 100
  • 0 < price <= 1000


The output for each test case should be a single line containing the minimum amount of money he has to spend for his friends. Print -1 if it is not possible for him to satisfy his friends.

Sample I/O

3 5
-1 -1 4 5 -1
5 5
1 2 3 4 5


Explanation of test cases:

1) As there are only 3 and 4kg packets in the shop, he will not be able to satisfy his friends as he would not be able to buy exactly 5kg of apples.

2) He can buy five 1kg packet as he has to buy 5 kg. So the min money he should spend is 5.

hide comments
anupverma20: 2016-04-17 20:58:27

Explanation by Shashank Tiwari says that we do not need N in solving the problem. However, the question says that the number of packets cannot exceed N. Taking the test case posted by bugdivine:
4 5
2 5 -1 -1 -1

According to the conditions put in the question, the number of packets cannot exceed 4, so buying 5 packets of 1 kg each is not possible. However, buying 3 packets of 1 kg and 1 packet of 2 kg would give the answer 3 * 2 + 1 * 5 = 11 Rupees.

bugdivine: 2016-04-08 22:22:59

Can someone explain me this test case:
4 5
2 5 -1 -1 -1
SPOJtoolkit shows answer to this as 11, but my answer is 10, since we can buy five 1Kg packets at a total price of 10

This test case is not there in there tests, but on my one submission where answer for it is 10 and for other where it is -1, both were given AC

Last edit: 2016-04-12 07:37:36
archit saxena: 2016-04-05 19:56:25

All those people saying that we have to ignore n are wrong wrote code using the constraint of n and got ac :p:)

Last edit: 2016-04-05 19:57:41
arundeepak: 2016-03-26 18:02:26

Rod Cutting problem :)
First dp AC.

Thanks to Shashank Tiwari for his explanation. :)

Last edit: 2016-03-26 18:03:10
Shashank Tiwari: 2016-03-22 09:07:40

Let me simplify what the problem says ...

A boy has 'N' friends and for them he has to buy 'K' kgs of apples. He goes to shop and finds that there are unlimited number of boxes of apples for each of 1kg , 2 kg , 3kg , ... K kgs .

These 1 ,2 ,.. ,K kgs boxes have prices attached to them. Prices are integers between -1 to 1000. '-1' price means he cannot buy that very kg box right now as it is currently not available.

The problem is to choose boxes in such way that total weight = K and total price is as minimum as possible.He can choose multiple boxes of any weight. Also , Though we take 'N' in input , no where we need this 'N'.



prices of those 1,2,.. k kg boxes repectively

(pls remember these boxes , if available are present in infinite number ; -1 price denote that very kg boxes are not available )


Minimum price ; if no solution exist just print -1

Last edit: 2016-03-22 09:08:48
paroaro: 2016-03-22 08:05:49

I get a lot of WA, please more testcases.

minhthai: 2016-03-02 10:07:13

price can be 0 ...

(Tjandra Satria Gunawan)(曾毅昆): 2016-02-25 14:30:05

ignore the n, and you'll get AC..

sohie: 2016-02-24 20:08:22

-1 <= price <= 1000 not 0 < price <= 1000
the price can be zero

Last edit: 2016-02-24 20:08:44
rascala: 2016-02-23 07:52:57

easy one- take care that one packet can be choosen more than 1 time

Added by:Kashyap Krishnakumar
Time limit:1s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ASM64
Resource:Own problem