Loading...
Dimitar1236 avatar Dimitar1236 2 Точки

JA1 Task 3 Bus

Здравейте, разгледах вече пратените решения, но не разбирам къде е разлика с моето. Judge ми дава 60/100. Не разбирам къде греша. Може ли насоки?

#include <iostream>
using namespace std;

int main()
{
    long int numOfTimes, trainDeparture, minTimeToWait = -2147483647, minDiffBetweenArrivalAndDeparture = +2147483647;
    int busTimes[20];
    cin >> numOfTimes;
    for (int i = 0; i < numOfTimes; i++)
    {
        cin >> busTimes[i];
    }
    cin >> trainDeparture;
    for (int i = 0; i < numOfTimes; i++)
    {
        if (abs(trainDeparture - busTimes[i]) < minDiffBetweenArrivalAndDeparture)
        {
            minDiffBetweenArrivalAndDeparture = abs(trainDeparture - busTimes[i]);
            minTimeToWait = abs(trainDeparture - busTimes[i])- ((abs(trainDeparture - busTimes[i]))/60)*40;
        }
    }
    cout << minTimeToWait;
}

Тагове:
0
C++ Fundamentals
MartinBG avatar MartinBG 4803 Точки

Явно има един или повече сценарии, които твоето решение не покрива.

 

Един от начините да откриеш какво пропускаш (след като не го виждаш директно от кода), е да си напишеш допълнителни тестове.

Към задачата вече има два теста, покриващи следните сценарии:

  • автобуса пристига преди влака
  • автобуса пристига заедно с влака

Сещаш ли се за друг сценарий?

 

 

Например, ако времето на тръгването на влака е преди времето на пристигането на кой да е автобус.

Колко време ще е изчакването при следните входни данни?

2
0031 2359
0000


Според програмата - 31 минути.

Здравият разум и личен опит клонят към друг отговор: 1 минута (23:59 -> 00:00), защото в този случай търсим автобусът, който е пристигнал последен предния ден.

 

0
14/04/2020 19:23:04
takvor avatar takvor 45 Точки

Възможна е следната логика:
Тъй като времената, макар и недесетични числа могат да бъдат извадени едно от друго и така намираме най-близкия автобус до тръгването на влака (да речем buses[idx]). Това, разбира се, е само време, което трябва да преработим по стандартния за преработки от този вид начин: привеждаме до най-малката единица (в случая минути) извършваме аритметиката и ако е необходимо конвертираме обратно (в случая не се налага). Например така:

    
    int minutes = ((trainDeparture/100*60+trainDeparture%100) - (buses[idx]/100*60+buses[idx]%100))%1440;
    cout << minutes;

0
14/04/2020 22:12:54
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.