eolymp
bolt
Try our new interface for solving problems
Məsələlər

Hilbert çeşidləməsi

Hilbert çeşidləməsi

Elementlərin verilənlər bazasında rəqəmli açara uyğun yerləşdirilməsi nəinki müəyyən elementin axtarılmasını sadələşdirir, həmçinin mərkəzi prosessorun keş yaddaşını daha yaxşı istifadə etməyə imkan verir: yaddaşa yaxın istənilən verilənlər seqmenti oxşar acarlı elementləri təsvir edəcək. Bu məsələn, açarları müəyyən diapazonda olan bütün elementlərə müraciət etmək istədiyimiz zaman faydalıdır. Əgər açarlar GPS-naviqasiya sistemində yer alan 2D-torunun nöqtələri olarsa, bu daha da çətinləşir. Əgər (x, y) nöqtələri əvvəlcə x-ə, sonra isə y-ə görə çeşidlənərsə, onda yaddaşa yaxın olan nöqtələr eyni x koordinatlarında olacaqlar, lakin y koordinatları eyni olmaya bilər. y koordinatlı nöqtələr torda bir-birindən uzaqda olacaqlar. Məsafənin daha da saxlanması üçün biz verilənləri fəzanı dolduran kəsilməz əyri üzrə çeşidləyəcəyik.

prb8188.gif

Hilbert əyrisi adlanan fəzanın doldurulması əyrilərindən birinə baxaq. Hilbert əyrisi (0, 0) koordinatından başlayır və (S, 0)-da tamamlanır, dolaşma prosesində (0, 0) və (S, S) tinləri olan kvadratdan keçir. O növbəti rekursiv konstruksiyaya malikdir: kvadratı umumi (S / 2, S / 2) nöqtəsi olan dörd hissəyə ayıraq və onlardan hər birini tam Hilbert əyrisi ilə düzgün çevrilmiş və çoxsaylı nüsxə ilə dolduraq. Əvvəlcə aşağı sol kvadrat (0, 0)-dan (0, S / 2)-yə qədər gedən əyri ilə doldurulur. Sonra yuxarı sol kvadrat (0, S / 2)-dən (S / 2, S / 2)-yə qədər doldurulur. Sonra yuxarı sağ kvadrat (S / 2, S / 2)-dən (S, S / 2)-yə qədər doldurulur. Və nəhayət, aşağı sağ kvadrat (S, S / 2)-dən (S, 0)-a qədər doldurulur. Digər tərəfdən Hilbert əyrisi əyrilər ardıcıllığının riyazi limiti kimi qurula bilər ki, bunlardan ilk altısı şəkildə verilmişdir.

Sizdən verilmiş yerləri Hilbert əyrisindən keçməyə uyğun çeşidləmək tələb olunur. Qeyd edək ki, əyri özü ilə, məsələn, (S / 2, S / 2) nöqtəsində sonsuz sayda kəsişdiyi üçün, S-in tək kimi elan edilməsi bütün tam nöqtələrdən yalnız bir dəfə keçildiyinə bizə zəmanət verir.

Giriş verilənləri

İlk sətir iki nS (1n200000, 1S < 109, S təkdir) tam ədədlərini ehtiva edir. Sonra n sətir verilir. i + 1 sətri i-ci yeri xiyi (0 ≤ xi, yiS) iki tam koordinatlarla və 46 simvoldan - hərf və rəqəm (A - Z, a - z, 0 - 9) çox olmayan adı təsvir edir. Heç bir iki yer eyni koordinatlara və ya eyni ada malik deyil.

Çıxış verilənləri

n sətir - Hilbert əyrisi ilə keçilmiş ardıcıllıqda hər biri ayrı sətirdə yerlərin adlarını çeşidlənmiş şəkildə verin.

Zaman məhdudiyyəti 2 saniyə
Yaddaşı istafadə məhdudiyyəti 128 MiB
Giriş verilənləri #1
14 25
5 5 Honolulu
5 10 PugetSound
5 20 Victoria
10 5 Berkeley
10 10 Portland
10 15 Seattle
10 20 Vancouver
15 5 LasVegas
15 10 Sacramento
15 15 Kelowna
15 20 PrinceGeorge
20 5 Phoenix
20 10 SaltLakeCity
20 20 Calgary
Çıxış verilənləri #1
Honolulu
Berkeley
Portland
PugetSound
Victoria
Vancouver
Seattle
Kelowna
PrinceGeorge
Calgary
SaltLakeCity
Sacramento
LasVegas
Phoenix
Mənbə 2015 ACM North America - Pacific Northwest, Дивизион 1, Задача H