Məktəbin hər bir şagirdi haqqında məlumat aşağıdakı kimidir: soyad, ad, sinif, doğum tarixi.
Müxtəlif vəziyyətlərdə, şagirdləri fərqli qaydalarla sıralamaq lazım ola bilər. Standart sıralama qaydalarının tam siyahısı belədir:
surname — yalnız soyadına görə;
fullname — soyadına görə, soyadlar eyni olduqda isə adına görə;
birthyear — doğum ilinə görə, ilin içindəki tarixi nəzərə almadan, kiçik tarixlərdən (böyük şagirdlər) böyük tarixlərə (kiçik şagirdlər) doğru;
birthdate — doğum tarixinə görə, ili də daxil olmaqla, kiçik tarixlərdən (böyük şagirdlər) böyük tarixlərə (kiçik şagirdlər) doğru;
birthday — doğum gününə görə, yəni müxtəlif illərin eyni gün və ayını bərabər hesab edərək, 01.01-dən 31.12-yə qədər (təqvim mənasında, gg.aa formatında);
grade — sinifə görə, təhsil ilinin nömrəsi kimi, 1-dən 11-ə qədər, hərfi nəzərə almadan;
class — əvvəlcə təhsil ilinin nömrəsi kimi sinifə görə, eyni olduqda isə sinif hərfinə görə A-dan Z-yə qədər.
Bundan əlavə, bəzən bir neçə qaydanı tətbiq etmək lazım olur: əvvəlcə biri, birincidə bərabərlik olduqda isə ikinci və s. Məsələn, "birthyear grade surname" deməkdir ki, əvvəlcə bütün şagirdləri, məsələn, 1998-ci il təvəllüdlü, sonra 1999-cu il təvəllüdlü, sonra 2000-ci il təvəllüdlü və s. göstərmək lazımdır, eyni doğum ilinə malik şagirdlər arasında siniflərə görə (təhsil illəri kimi, hərfi nəzərə almadan) sıralama aparılmalı, eyni doğum ilinə və hərfi nəzərə almadan sinifə malik olanlar isə soyadlarına görə əlifba sırasına uyğun yerləşdirilməlidir.
Birinci sətirdə lazım olan sıralama qaydası yazılıb, bir və ya bir neçə söz kimi surname, fullname, birthyear, birthdate, birthday, grade, class. Ən azı bir söz mütləq mövcuddur; əgər bir neçə söz varsa, onlar tək boşluqla ayrılır; eyni söz bir dəfədən çox təkrarlana bilməz.
İkinci sətirdə şagirdlərin sayı (2\leqslant N \leqslant 12345) yazılıb.
Daha sonra qrupdan ibarət hər biri 4 sətir olan məlumatlar gəlir: (1) soyad — böyük latin hərfi ilə başlayır, sonra latin hərfləri, tire, apostrof ardıcıllığı; (2) ad — böyük latin hərfi ilə başlayır, sonra latin hərfləri, tire, apostrof və boşluqlar ardıcıllığı; (3) sinif — 1-dən 11-ə qədər olan rəqəm və bir böyük latin hərfi, aralarında boşluq olmadan; (4) doğum tarixi (gg.aa.yy, yəni həm gün, həm ay, həm də il həmişə iki rəqəmlə verilir).
Bütün doğum tarixləri düzgündür (məsələn, 30.02 yoxdur) və 1990-dan 2030-a qədər olan illərə aiddir. Məsələn, 97<02, çünki əslində bu 1997 və 2002-dir. Əksər hallarda, yuxarı sinif şagirdlərinin doğum tarixləri aşağı sinif şagirdlərindən daha erkəndir, lakin istisnalar mümkündür.
Əksəriyyət (ən azı 99,9%) soyad və adların uzunluğu 20 simvoldan çox deyil, lakin qalan 0,1% üçün yalnız bu təmin edilir ki, onların ümumi uzunluğu bir milyon simvoldan çox deyil. Soyadlar və adlar mütləq hərf və ya apostrofla bitir (lakin tire və ya boşluqla deyil).
Soyadları soyadlarla və adları adlarla müqayisə edərkən proqramlaşdırma dilləri üçün standart olan böyük-kiçik hərf həssas leksikoqrafik müqayisə istifadə olunmalıdır (tire, boşluq və s. olsa belə).
sətir çıxarın, hər birində bir şagird haqqında məlumatlar belə formatda yazılıb: sinif, vergül, boşluq, soyad, vergül, boşluq, ad, vergül, boşluq, doğum tarixi.
Sinif, soyad, ad və doğum tarixi giriş məlumatlarında olduğu kimi bayt-bayt eyni olmalıdır.
Sətirlər birinci sətirdə təsvir olunan sıralama qaydasına uyğun olaraq sıralanmalıdır.
Göstərilən qaydaların tətbiqi nəticəsində müxtəlif düzgün cavablar mümkün olduqda, hər hansı bir düzgün cavabı çıxarın. Məsələn, artıq qeyd olunan "birthyear grade surname" qaydasında, eyni sinifdə (təhsil ili) eyni soyadlı eyni doğum ilinə malik olanlar varsa, onları istənilən qaydada çıxara bilərsiniz, lakin hər birini yalnız bir dəfə çıxarmalısınız.
Nümunə
birthyear grade surname
8
Gonsales
Anna Maria
5A
01.05.03
Ivanov
Kyrylo
11A
12.01.97
Ivanov
Ivan
3D
20.01.05
Ivanov
Andrii
11B
23.12.97
Petrenko
Nataliia
11B
23.08.97
Andrijchenko
Kateryna
11B
07.02.98
Shevchenko
Denys
10A
07.05.98
Smirnov-Kovalenko
Yehor
9A
13.11.9811A, Ivanov, Kyrylo, 12.01.97
11B, Ivanov, Andrii, 23.12.97
11B, Petrenko, Nataliia, 23.08.97
9A, Smirnov-Kovalenko, Yehor, 13.11.98
10A, Shevchenko, Denys, 07.05.98
11B, Andrijchenko, Kateryna, 07.02.98
5A, Gonsales, Anna Maria, 01.05.03
3D, Ivanov, Ivan, 20.01.05Ivanov Andrii və Ivanov Kyrylo yerləri dəyişdirilmiş cavab da doğrudur. Bu giriş məlumatları üçün bu iki cavabdan başqa düzgün cavab yoxdur.
C# dili, əksər proqramlaşdırma dillərindən fərqli olaraq, standart böyük-kiçik hərf həssas leksikoqrafik müqayisə haqqında bir qədər fərqli təsəvvürə malikdir, buna görə də açıq-aydın p1.surName.CompareTo(p2.surName) fraqmenti əvəzinə String.Compare(p1.surName, p2.surName, StringComparison.Ordinal) yazılmalıdır və bu vacib olan digər hallarda da eyni şəkildə.