Fall FLASG | Bricodeque

This was the problem page during the contest. Access the current page here.
Time limit: 0.8s Memory limit: 16MB Input: Output:

Primul venit, primul servit.

Te afli în magazinul Bricodeque. Acest magazin își dorește un număr cât mai mare de clienți care vor achita produse. Pe lângă asta, mai dorește ca fiecare client să stea cât mai puțin la rândul casei de marcat.

De azi, magazinul dorește să introducă noul algoritm de sortare a clienților la casele de marcat, doar că dă rateuri și ești rugat să faci un alt cod.

Ți se oferă pentru ziua de azi numărul de clienți pe care o să aibă magazinul, un număr NN, respectiv momentul în care fiecare client va ajunge în zona caselor de marcat. Magazinul are KK case de marcat. Fiecare casă de marcat are o limită LIMLIM de persoane care pot sta la rând până când clientul din față va plăti. Dacă o casă de marcat este plină, aceasta este considerată închisă până când persoana din față va plăti. Dacă toate casele de marcat sunt închise, atunci clientul va pleca la un alt magazin. Acest lucru nu ne convine, astfel va trebui să facem tot posibilul de a avea câți mai puțini clienți care pleacă din magazin.

Fiecare client va sta la rând un timp TT de secunde până când va achita. Dacă în fața lui se află PP persoane, va aștepta până când îi va urma rândul la casă. Doar când acesta va fi primul la rând se vor porni cele TT secunde.

Date de intrare

Pe prima linie se află 44 numere NN, KK, TT și LIMLIM, cu semnificația de mai sus.
Apoi va urma NN linii, unde pentru fiecare client ii, i=1,Ni=\overline{1,N} se află timpul la care acesta ajunge în zona caselor de marcat.

Date de ieșire

Pe prima linie se vor găsi 22 numere, primul fiind numărul maxim de clienți care au plătit, respectiv timpul la care ultimul client a ieșit de la rând.
Pe următoarele NN linii se vor găsi 22 numere, indexul clientului în ordinea dată, respectiv casa de marcat unde acesta s-a pus la rând. Dacă toate casele de marcat sunt închise, se va afișa -1.

Restricții și precizări

  • N100 000N \leq 100 \ 000
  • K1 000K \leq 1 \ 000
  • LIM100LIM \leq 100
  • T100T \leq 100
  • timpul la care un client ajunge la zona caselor de marcat 1 000\leq 1 \ 000
  • Dacă există mai mulți clienți care ajung în același timp la casele de marcat, prioritate va avea cel care are indexul mai mic la citire.
  • Dacă un client XX poate intra doar la o casă de marcat, iar clientul din față iese tot în același moment, atunci clientul XX se poate pune la rând.

Exemplul 1

stdin

10 2 3 2
1
1
1
2
3
3
4
5
5
7

stdout

7 13
1 1
2 2
3 1
4 2
5 -1
6 -1
7 1
8 2
9 -1
10 1

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