I have got problem with this task from my university algorithm course (translated from german):

> John have got a party. He prepared $x$ glasses of vodka and $k*x$
> glasses of rum.
>
> Number of glasses is n. Each guests drink one
> round of alcohol (one round is $k$ glasses of rum and $one$ of vodka) but
> guest must chose glass that every full glass must have got one full
> neighbor.
>
> Write the program which simulate John's party. The party ends when all
> glasses are empty.
>
> In input we have got $n$ and $k$ which means number of glasses and number
> of glasses of rum drunk in single turn).

Simple Input : (assume that r is rum and v - vodka ).

> 16 3 vvrrrvrvrrrrrrrr

Simple Output : (we numbered glass 1...n)

> 1 14 15 16
> 2 11 12 13
> 3 4 5 6
> 7 8 9 10

Explain :

Guest 1 drink 1, 14, 15 and 16 glass.
Guest 2 drink 2, 11, 12, 13 glass.
etc.

We write it in ascending order. Notice that we have got $\frac{n}{(k+1)}$ guests, $n$ glasses, $k$ glasses of rum in every round. And in all inputs $k+1$ divides $n$. And $n$ can be very big - about 2 000 000. And we have about 1-2s to answer the question.

Find the fastest as possible algorithm to solve this problem.

Thanks for every help. If you have got any questions, i will answer it.
Edger.