Soru 4 - C Kargo
C Kargo, tüm dünyaya yayılmış yerleşik teşkilatı, dünyanın en ücra köşelerine kurduğu merkezleriyle 10 yılda 1 numaralı kargo şirketi konumuna ulaşmıştır. Şirket yapısına göre sadece 1 genel merkez bulunmaktadır. Bunun dışındaki merkezler başka bir üst merkeze bağlıdır ve 0 veya daha fazla alt merkez içerebilirler.
Yönetim Kurulu Başkanı Dennis Ritchie, 11. yılında bu başarıda en büyük rolü oynayan teslimat merkezleriyle büyük bir toplantı yapmaya karar verir. Çok fazla merkez olduğu için toplantıya kura ile belirleyeceği merkezleri çağırmaya karar verir. Herhangi bir kura iki aşamadan oluşmaktadır. Birinci aşamada bir merkez seçilir, o merkez ve ona direk veya dolaylı yoldan bağlı bütün alt merkezler teslimat sayılarına göre artan sıralanır. İkinci aşamada ise sıralanmış olan bu merkezlerden belirli bir sırada bulunan merkez seçilir ve toplantıya çağırılır. Ancak merkez sayısının fazlalığı, dağınık yapısı ve toplantıya çağrılacak katılımcı sayısının fazlalığı, bu hesabın yapılmasının oldukça uzun süreceğinin bir göstergesidir. Dennis bu konuda sizden yardım istemektedir.
Varsayımlar
- N adet merkez bulunmaktadır. (1 ≤ N ≤ 100000)
- Merkezler 1’den N’ye kadar numaralandırılmıştır.
- Ana merkez dışındaki merkezler, mutlaka bir üst merkeze bağlıdır.
- Toplantıya K adet merkez davet edilecektir. (1 ≤ K ≤ 10000)
- Herhangi 2 merkez, aynı sayıda teslimat yapmamıştır.
- Kuranın her iki aşaması da, mutlaka bir merkeze denk gelecektir. Diğer bir deyişle herhangi bir merkezin bulunamayacağı hatalı kura çekilmeyecektir.
- Bir merkez 1’den fazla kurada çıkabilir.
- Programınız girdiyi kargo.gir dosyasından okumalı, çıktıyı kargo.cik dosyasına aynen aşağıda belirtildiği gibi yazmalıdır.
Girdi (kargo.gir)
- Girdi dosyasının ilk satırında merkez sayısı N bulunmaktadır.
- Takip eden satırda N adet merkezin teslimat sayıları sırasıyla aralarında birer boşluk olacak
şekilde bulunmaktadır.
- Takip eden satırda N adet merkezin hangi üst merkeze bağlı olduğunu belirten numaralar
sırasıyla aralarında birer boşluk olacak şekilde bulunmaktadır. Buna göre örneğin; 5. tamsayı, 5
numaralı merkezin hangi üst merkeze bağlı olduğunu belirtecektir. Yalnızca bir merkez genel
merkez olacağından bu satırdaki N adet tamsayıdan yalnızca biri -1 olacak ve genel merkezi
ifade edecektir.
- Takip eden satırda, toplantıya katılacak merkez sayısı K verilecektir.
- Takip eden K adet satırın her birinde, seçilecek merkezlerin sorguları verilecektir. Buna göre 1.
sayı hangi merkez ve altındakilerin sıralanacağı, 2. sayı ise kaçıncı sıradaki merkezin toplantıya
davet edileceğini belirtmektedir.
Çıktı (kargo.cik)
- Programınız her kuranın sonucunu (kurada seçilen merkezin numarasını), sorulduğu sırayla, her
bir satıra bir sonuç gelecek şekilde çıktı dosyasına yazmalıdır.
Örnek
|
kargo.gir:
5
1 3 5 2 7
-1 1 2 1 3
4
2 3
4 1
3 2
3 2
|
kargo.cik:
5
4
5
5
|