Värvipalett | 프로그래밍의 벗 PivotOJ
PivotOJ

Värvipalett

시간 제한: 3000ms메모리 제한: 1024MB출처: EIO 2016-17 sel2BOJ 7166

문제

Tarkvarafirma Gold \& Silver Soft on arendamas uut graafikaprogrammi. Üks selle mooduleid on värvipaleti haldus. Programmi käivitudes on palett tühi. Edasi võib kasutaja lisada paletti uusi värve või küsida, milline paletis olevatest värvidest on antud värvile sarnaseim.

Värve esitatakse KK-bitiste arvudena (väärtustega 00 kuni 2K12^K-1) ja kahe värvi sarnasuseks loetakse nende esitustes kokkulangevate bittide arvu. Näiteks K=5K = 5 korral on värvide 00110 ja 10101 sarnasus 22, sest kokku langevad ainult vasakult teise ja kolmanda biti väärtused.

Kirjutada programmile värvipaleti haldamise moodul, milles on järgmised funktsioonid:

Funktsioon Kirjeldus
void init(int k, int n) Paleti initsialiseerimine kk-bitiste värvide kasutamiseks. Seda funktsiooni kutsutakse välja üks kord programmi töö alguses ja sellele järgnevad kokku nn add ja find väljakutset.
void add(int c) Värvi cc lisamine paletti.
int find(int c) Värvile cc paletist parima vaste leidmine. Funktsioon peab tagastama paletis olevate värvide hulgast värviga cc maksimaalselt sarnase. Kui maksimaalselt sarnaseid on mitu, tagastada ükskõik milline neist. Seda funktsiooni kutsutakse välja ainult siis, kui paletis on juba vähemalt üks värv.
void done() Töö lõpp. Seda funktsiooni kutsutakse välja üks kord programmi töö lõpus.

입력

Tekstifaili esimesel real on värvide esitamiseks kasutatavate bittide arv KK (1K201 \le K \le 20) ja operatsioonide arv NN (1N1061 \le N \le 10^6). Järgmisel NN real on igaühel täisarvud TiT_i ja CiC_i (0Ci<2K0 \le C_i < 2^K), kus Ti=1T_i = 1 tähendab värvi CiC_i lisamist paletti ja Ti=2T_i = 2 värvile CiC_i parima vaste leidmist paletist.

출력

Tekstifaili väljastatakse hindamisprogrammi ja mooduli vahelise suhtluse logi.

예제

예제 1

입력
2 3
1 1
2 0
2 1
출력
init(2, 3)
add(1)
find(0) = 1
find(1) = 1
done()

예제 2

입력
3 5
1 0
1 7
2 1
1 1
2 1
출력
init(3, 5)
add(0)
add(7)
find(1) = 0
add(1)
find(1) = 1
done()
코드를 제출하려면 로그인하세요.