I've got a REALLY tricky problem to solve.... (Please help me all you Geniuses!)

I have a profile of the day, broken down into 15 minute segments. In each of these segments is a number representing the number of additional agents I need to take telephone calls (G20:AX20). The list looks something like...

4 4 0 3 4 5 3 5 0 1 1 0 0 2 1 4 3 1 2 0 ..........

which might equal 60 in total for the whole day, which would represent 15 hours as each is a 15 minute slot.

So, If I had an additional 15 hours available I could schedule my 15 'overflow' agents to take the calls accordingly.

HOWEVER, The problem is that each agent can only do a minimum of 30 minutes in one go and up to 2 hours maximum each time (45 minutes WOULD be acceptable).

How can I obtain a profile from the above line of numbers, that fit in the best possible way - it doesn't have to be exact, as it is not always going to be possible - with the min 30 mins so that I could then go away and assign shifts???

E.G. I would want from the above something like...

(Original)

4 4 0 3 4 5 3 5 0 1 1 0 0 2 1 4 3 1 2 0 ..........

(Desirable)

4 4 0 3 3 5 5 5 0 1 1 0 0 1 1 3 3 1 1 0 ..........

Or something similar... Hope this all makes sense.

Thanks HUGELY in advance for any help!!!!