roata

Time limit: 0.1s Memory limit: 4MB Input: roata.in Output: roata.out

Una dintre atracţiile celebrului parc de distracţii Prater din Viena este Marea Roată Vieneză. Din ea se poate admira priveliştea întregii Viene.

Roata are nn cabine, numerotate de la 11 la nn în sens orar şi dispuse simetric pe circumferinţa roţii. Îmbarcarea clienţilor se face în cabina în care roata este tangentă cu solul, iar rotirea începe cu cabina 11 aflată în poziţia de îmbarcare şi se face în sens antiorar. Un client plăteşte pentru o rotire 11 EUR şi poate cumpăra un număr oarecare de rotiri.

Cei pp clienţi care doresc utilizarea roţii trebuie să respecte următoarea procedură: clientul cu numărul de ordine ii îşi cumpără un bilet pe care sunt înscrise numărul său de ordine şi numărul de rotiri cic_i, apoi se aşează la rând. Când în poziţia de îmbarcare este o cabină liberă sau se eliberează o cabină, roata se opreşte şi urcă următorul clientul. Un client coboară după ce se efectuează numărul de rotiri înscris pe bilet.

Cerință

Să se scrie un program care, cunoscând numărul nn de cabine al roţii, numărul pp de clienţi, precum şi numărul de rotiri cumpărate de fiecare client, cic_i, să calculeze:

  • suma totală încasată de administratorul roţii de la clienţi;
  • ordinea în care coboară clienţii din roată;
  • numărul cabinei din care coboară ultimul client.

Date de intrare

Fişierul de intrare roata.in conţine pe primul rând numărul natural nn, pe al doilea rând numărul natural pp iar pe al treilea rând numerele naturale cic_i, separate printr-un spaţiu, cu semnificaţiile de mai sus.

Date de ieșire

Fişierul de ieşire roata.out va conţine pe prima linie suma totală încasată, pe a doua linie numerele de ordine ale clienţilor, în ordinea coborârii, separate printr-un spaţiu, iar pe a treia linie numărul cabinei din care va coborî ultimul client.

Restricții și precizări

  • 2n3602 \leq n \leq 360;
  • 1p100 0001 \leq p \leq 100 \ 000;
  • 1ci100 0001 \leq c_i \leq 100 \ 000;
  • pentru rezolvarea primei cerinţe se acordă 20%20\% din punctaj, iar pentru celelalte două cerinţe se acordă câte 40%40\% din punctaj fiecare.

Exemplu

roata.in

4
7
6 4 1 5 2 8 3

roata.out

29
3 5 2 4 1 7 6
3

Explicație

Roata are n=4n = 4 cabine şi numărul de clienţi este p=7p = 7. Primul client cumpără 66 rotiri, al doilea 44 rotiri , \dots , iar al şaptelea client cumpără 33 rotiri. Suma totală încasată este de 2929 EUR. După ce primii 44 clienţi se urcă în roată şi se efectuează o rotire completă, primul care coboară este clientul al 33-lea şi imediat se urcă clientul al 55-lea. După încă 22 rotiri, clientul al 55-lea coboară şi se urcă clientul al 66-lea. După încă o rotire coboară clientul al 22-lea şi se urcă al 77-lea client. Ultimii 44 clienţi coboară în ordinea 4,1,7,64, 1, 7, 6. Cabina din care coboară ultimul client este cabina cu numărul 33.

Log in or sign up to be able to send submissions!