Olimpiadada g‘olibni aniqlash qoidalari

Agar tizimga ishonsangiz, davomini o‘qishingiz shart emas. Juda murakkab :)


Barcha ballar 0 dan 100 gacha oraliqda 4 xona aniqlikda hisoblanadi. Hisob-kitob natijalariga ko‘ra eng ko‘p ball to‘plagan talaba esa g‘olib deb topiladi.


Bitta olimpiadada g‘olib bo‘lgan talaba boshqa olimpiadada qatnashishi mumkin lekin qayta g‘oliblikni qo‘lgan kirita olmaydi. Ya'ni oldingi olimpiadalarda g‘olib bo‘lgan talabalarning bali hisobga olinmaydi, garchi ular 1-o‘rinni egallagan bo‘lsa ham.


Olimpiadadagi har bir masala kamida 1 ta test qiymatga tekshiriladi, ko‘pi bilan 50 ta bo‘lishi mumkin. Har bir tekshirish jarayonida quyidagi 2 ta qiymat aniqlanadi:

  1. Dasturning ushbu testga ketgan haqiqiy vaqti (ishga tushgandan to dastur tugaguncha bo‘lgan vaqt)
  2. Dasturning tezkor xotiradan olgan qiymati


Dasturning qancha vaqt va qancha xotira joy olishi OS tomonidan aniqlanadi. Agar siz bitta dasturni ikki marotaba jo‘natsangiz, dasturning ishlash vaqti va tezkor xotiradan olgan qiymati farq qilishi mumkin.


Olimpiada tugashi bilan g‘olibni aniqlash ketma-ketligi quyidagicha:


Dastlab har bir masalaga nisbatan qabul qilingan yechimlar uchun quyidagi qiymatlar aniqlanadi :

  1. Barcha testlarga ketgan o‘rtacha vaqt (time): barcha testlarga ketgan vaqt yig‘indisining testlar soniga nisbati
  2. Barcha testlarga ketgan o‘rtacha xotira (memory): barcha testlarga ketgan xotira qiymatining yig‘indisining testlar soniga nisbati
  3. Ushbu masalani yechishga jo‘natilgan dastur kodidagi belgilar soni (code_size) (bo‘shliq, dastur kodidagi izohlar, yangi qatorga o‘tish belgilari, umuman dastur kodidagi har qanday belgi hisobga olinadi)


Yuqorida aniqlangan qiymatlarning har biriga nisbatan eng kam va eng yuqori chegarasi har bir dasturlash tiliga nisbatan shakllantiriladi:


min_memory - barcha qabul qilingan urinishlar ichidagi eng kam joy olgan qiymat (baytda)

max_memory - barcha qabul qilingan urinishlar ichidagi eng ko‘p joy olgan qiymat (baytda)

min_time - barcha qabul qiligan urinishlar ichidagi eng kam olgan vaqt (millisekundda)

max_time - barcha qabul qilingan urinishlar ichidagi eng ko‘p olgan vaqt (millisekundda)

min_code_size - barcha qabul qilingan dasturlash kodlaridagi eng kam yozilgan kod (belgilar soni)

max_code_size - barcha qabul qilingan dasturlash kodlaridagi eng ko‘p yozilgan kod (belgilar soni)


Chegara anqilangandan keyin, har bir qabul qilingan urinishga nisbatan quyidagicha ball beri (min_time, max_time, min_memory, max_memory, min_code_size va max_code_size lar har bir dasturlash tiliga nisbatan qiymati olinadi. Chunki har bir dasturlash tilining ishga tushish vaqti va xotiradan oladigan qiymati har xil):


avg_time_ball = agar min_time = max_time bo‘lsa 100, aks holda 100 - (time - min_time) * 100 / (max_time - min_time)


avg_memory_ball = agar min_memory = max_memory bo‘lsa 100, aks holda 100 - (memory - min_memory) * 100 / (max_memory - min_memory)


avg_code_ball = agar min_code_size = max_code_size bo‘lsa 100, aks holda 100 - (code_size - min_code_size) * 100 / (max_code_size - min_code_size)


Uchta qiymatdan foydalanibg urinish bali quyidagicha aniqlanadi: ball = [(avg_time_ball + avg_memory_ball + avg_code_ball) / 3]


Har bir unishga nisbatan ball aniqlangandan so‘ng, ushbu urinishlar ichida har bir talabaning har bir masalaga nisbatan eng katta bali aniqlanadi va ularning yig‘indisiga hisoblanadi. Ushbu yig‘indiga esa quyidagi ikkita qiymat ham qo‘shiladi:


  1. Jami urnishilariga nisbatan (total) qabul qilingan urinishlari qiymati (success): attempt_ball = 100 - success * 100 / total (qancha kam xato qilsangiz shuncha ko‘p ball olasiz)
  2. Dastlabki va oxirgi qabul qilingan urinish sanalarining sekunddagi qiymatining (success_time), olimpiada davomiyligiga (duration_time) nisbati: duration_ball = 100 - success_time * 100 / duration_time (qancha qisqa vaqtda barcha to‘g‘ri javoblarni jo‘natsangiz, shuncha yuqori ball olasiz. Yechilgan masalaga qayta jo‘natilgan to'g‘ri javob ham qabul qilinadi. Shuning uchun to‘g‘ri javoblarni qayta jo‘natmaslikka harakat qiling.)


Yuqoridagi qoidalar asosida 5 tadan ko‘p talaba bir xil ball bo‘plasa, ushbu ball to‘plagan talabalar ichida tasodifan 5 tasi tanlab olinadi va barchasi g‘olib teb topiladi.

Ushbu sahifaga havola: https://itboom.uz/i67/