Piracka Chciwość

시간 제한6초메모리 제한2048 MB

요약
고전적인 해적 투표 규칙에 따라 각 해적이 받는 금화 수를 정한다. 해적은 제안자가 바다에 던져진 뒤 받을 몫보다 a_i 이상 더 받을 때만 찬성한다.
난이도

어려움10점 중 9점

유형
그리디, 동적 계획법, 구현, 수학
정답자
아직 제출이 없습니다

문제

Po wielomiesięcznym i pełnym niepowodzeń rejsie, piraci ze statku Floating Point przypadkowo odkryli skarb złożony z mm jednakowych złotych monet. Postanowili więc podzielić skarb i zakończyć rejs.

Podczas rejsu piraci zdążyli się nawzajem poznać. Wszyscy oni wiedzą, że wszyscy piraci myślą perfekcyjnie logicznie (wielu z nich zaczęło swoją piracką karierę od łamania zabezpieczeń w oprogramowaniu), a także kierują się głównie chciwością, aczkolwiek niektórzy piraci są bardziej chciwi od innych. Została też jednoznacznie ustalona liniowa hierarchia – piraci zostali ponumerowani liczbami od 11 do nn.

Do podziału skarbu piraci stosują tradycyjną piracką technikę. Pirat o najmniejszym numerze (wśród jeszcze niewyrzuconych za burtę) proponuje podział skarbu, czyli dla każdego niewyrzuconego pirata ii określa b_ib\_i, całkowitą nieujemną liczbę złotych monet, którą ten pirat otrzyma w proponowanym podziale (suma wszystkich wartości b_ib\_i wynosi mm). Następnie wszyscy piraci (włącznie z proponującym) głosują za lub przeciw zaproponowanemu podziałowi. Jeśli co najmniej 5050\\% piratów zagłosuje za podziałem, to skarb jest rozdzielany zgodnie z propozycją. W przeciwnym przypadku pirat dzielący zostaje wyrzucany za burtę i nie bierze udziału w dalszych negocjacjach, ani nie otrzymuje żadnych złotych monet. Po czym procedura ta jest powtarzana (kolejny pirat w hierarchii proponuje podział pozostałym piratom).

Każdy pirat ii głosuje za zaproponowanym podziałem, jeśli w przypadku odrzucenia podziału:

  • zostałby wyrzucony za burtę po zaproponowaniu swojego podziału,
  • lub b_i≥d_i+a_ib\_i ≥ d\_i + a\_i, gdzie d_id\_i jest liczbą monet, które pirat dostałby po odrzuceniu podziału, zaś a_ia\_i jest jego współczynnikiem chciwości.

Wszyscy piraci znają wszystkie współczynniki chciwości oraz wiedzą, że wszyscy będą się kierować w swoich wyborach następującą deterministyczną strategią:

  • Jeśli nie istnieje żaden akceptowalny podział (czyli taki, który byłby zaakceptowany przez co najmniej połowę niewyrzuconych za burtę piratów), to pirat proponuje, że sam weźmie cały skarb. Po czym pogodzony ze swoim losem daje się wyrzucić za burtę.
  • Jeśli istnieje akceptowalny podział, to któryś z takich podziałów zostanie zaproponowany (lepiej otrzymać nawet 00 monet niż zostać wyrzuconym za burtę).
  • Spośród wielu możliwych akceptowalnych propozycji pirat wybiera podział, w którym zatrzyma największą część skarbu dla siebie.
  • Piraci są skłonni do obwiniania piratów bliżej w hierarchii o wcześniejsze niepowodzenia, więc jeśli nadal podział nie jest jednoznaczny, to wolą przydzielać więcej monet piratom o większym numerze. A dokładniej: pirat ii, wybierając spośród jeszcze dostępnych akceptowalnych podziałów, minimalizuje kolejno: liczbę monet otrzymanych przez pirata i+1i + 1, następnie liczbę monet otrzymanych przez pirata i+2i + 2 itd.

Twoim zadaniem jest napisanie programu, który określi, ile złotych monet otrzyma każdy z piratów, zgodnie z powyższymi regułami.

입력

W pierwszym wierszu znajdują się dwie liczby całkowite nn oraz mm (1≤n≤50,0001 ≤ n ≤ 50\\, 000, 1≤m≤5,000,0001 ≤ m ≤ 5\\, 000\\, 000) oznaczające odpowiednio liczbę piratów oraz liczbę złotych monet do podziału.

W drugim wierszu znajduje się ciąg nn liczb całkowitych a_1,a_2,…,a_na\_1, a\_2, \dots , a\_n (1≤a_i≤641 ≤ a\_i ≤ 64), oznaczający współczynniki chciwości kolejnych piratów.

출력

Na wyjście należy wypisać jeden wiersz zawierający nn liczb całkowitych b_1,b_2,…,b_nb\_1, b\_2, \dots , b\_n. Jeśli ii-ty pirat zostanie wyrzucony za burtę po zastosowaniu procedury opisanej w zadaniu, to b_i=−1b\_i = -1; w przeciwnym przypadku b_ib\_i oznacza liczbę monet, które ii-ty pirat otrzyma.

힌트

Wyjaśnienie przykładów: W pierwszym przykładzie mamy trzech piratów: Algora, Bajtazara i Chara. Gdyby Algor został wyrzucony za burtę, to Bajtazar dokonałby podziału, w którym sam otrzymuje wszystkie 100100 monet, a Char nic nie otrzymuje. Wprawdzie Char nie zaakceptowałby takiego rozwiązania, ale zostałby przegłosowany przez Bajtazara.

W związku z tym Algor nie jest w żaden sposób w stanie przekonać Bajtazara do głosowania za (musiałby mu zaproponować co najmniej 100+1100 + 1 monet). Zatem potrzebuje przekonać Chara, dając mu odpowiednio dużo monet (a konkretnie co najmniej 0+560 + 56). W związku z tym Algor oferuje 5656 monet Charowi, a 4444 monety zostawia sobie – Algor i Char zagłosują za takim podziałem, przegłosowując Bajtazara.

W drugim przykładzie pierwszy pirat ma za mało złotych monet do podziału, by usatysfakcjonować wystarczająco wielu piratów. Proponuje więc, że weźmie monetę dla siebie, po czym zostaje wyrzucony za burtę. Drugi pirat ma do wyboru dwa podziały, które są zaakceptowane. Może dać monetę trzeciemu albo czwartemu piratowi – zgodnie z regułami wybiera ten drugi podział.

W trzecim przykładzie za podziałem zaproponowanym przez pierwszego pirata zagłosowali piraci o numerach 11, 22 oraz 55.

예제3

  1. 예제 1

    입력
    3 100
    28 1 56
    
    예상 출력
    44 0 56
    
  2. 예제 2

    입력
    5 1
    1 1 1 1 1
    
    예상 출력
    -1 0 0 1 0
    
  3. 예제 3

    입력
    6 6
    3 5 1 4 2 6
    
    예상 출력
    2 0 0 0 4 0