لینک‌های مفید برای شرکت در مسابقه:

در زمان مسابقه می‌توانید سوال‌های خود را از قسمت "سوال بپرسید" مطرح کنید.

دو سری راهنمایی برای سوالات اضافه شده است.

صرافی حسن


  • محدودیت زمان: ۳ ثانیه
  • محدودیت حافظه: ۶۴ مگابایت

همان‌طور که می‌دانید، ‌این روزها قیمت دلار بسیار پرنوسان است و روزانه تغییر می‌کند. حسن یک صرافی دارد، اما محاسبه‌ی قیمت برای او سخت است و از شما می‌خواهد در هر زمان از سال، قیمت دلار را برای او محاسبه کنید.

شما باید یک لیست از تغییرات قیمت دریافت کرده و قیمت را در روز‌های خواسته شده به حسن اعلام کنید.

نکته: برای دریافت ورودی، می‌توانید از تابع readline استفاده کنید.

ورودی🔗

در خط اول ورودی استاندارد (stdin)، عدد صحیح nn که بیانگر تعداد نوسان‌های قیمت است وارد می‌شود.

0n<3600 \leq n < 360

در nn خط بعدی، تاریخ (با فرمت mm/dd) و قیمت دلار در تاریخ ذکرشده وارد می‌شود. برای سادگی، فرض کنید همه‌ی ماه‌ها ۳۰ روزه هستند. هم‌چنین، تضمین می‌شود که تاریخ‌ها از یکدیگر متمایز هستند.

توجه: قیمت دلار را در تاریخ 01/01 برابر با 14900 در نظر بگیرید.

در خط بعدی، عدد صحیح mm که بیانگر تعداد مشتری‌های حسن است وارد می‌شود.

0m1050 \leq m \leq 10^5

در mm خط بعدی، در هر خط یک تاریخ آمده است.

خروجی🔗

به ازای هر مشتری، قیمت دلار در آن روز را چاپ کنید.

مثال🔗

ورودی نمونه🔗

4
05/12 22000
06/06 24100
05/20 17000
06/05 23300
4
06/07
05/12
05/21
06/05
Plain text

خروجی نمونه🔗

24100
22000
17000
23300
Plain text

قسمت آموزشی🔗

در این قسمت راهنمایی‌های سوال، به مرور اضافه می‌شود. مشکلات‌تان در راستای حل سوال را می‌توانید از بخش "سوال بپرسید" مطرح کنید.

راهنمایی ۱

از آن‌جایی که تعداد روزهای سال عدد کوچکی است، ساده‌ترین و بهترین روش برای ذخیره‌سازی قیمت دلار در روزهای مختلف، استفاده از یک آرایه‌ی انجمنی است:

<?php

$n = readline();
$prices = [
    1 => 14900
];
for ($i = 0; $i < $n; $i++) {
    [$date, $price] = explode(" ", readline());
    $dayNumber = getDayNumberOfDate($date);
    $prices[$dayNumber] = $price;
}

// TODO: complete
PHP
راهنمایی ۲

در ادامه، باید قیمت تاریخ‌هایی که در ورودی نیامده‌اند را بر اساس سایر تاریخ‌ها مشخص کرد. قیمت در تاریخ dd برابر است با قیمت در بزرگ‌ترین تاریخی که کوچک‌تر یا مساوی dd است.

<?php

function fillEmptyDates(&$prices)
{
    $currentDate = 1;
    for ($i = 2; $i <= 360; $i++) {
        if (!array_key_exists($i, $prices)) {
            $prices[$i] = $prices[$currentDate];
        } else {
            $currentDate = $i;
        }
    }
}

function getDayNumberOfDate($date)
{
    [$m, $d] = explode("/", $date);
    $dayNumber = (($m - 1) * 30) + $d;

    return $dayNumber;
}

$n = readline();
$prices = [
    1 => 14900
];
for ($i = 0; $i < $n; $i++) {
    [$date, $price] = explode(" ", readline());
    $dayNumber = getDayNumberOfDate($date);
    $prices[$dayNumber] = $price;
}
fillEmptyDates($prices);
PHP

در نهایت، با دریافت تاریخ‌های مراجعه‌ی مشتری‌های حسن، قیمت متناظر در آن روزها را چاپ می‌کنیم:

$m = readline();
for ($i = 0; $i < $m; $i++) {
    $date = readline();
    $dayNumber = getDayNumberOfDate($date);
    echo $prices[$dayNumber]."\n";
}
PHP
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.