|
|
вернуться в форумОбщий форумHelp with task Послано Edger 19 окт 2012 20:29 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. |
|
|