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;
}
Възможна е следната логика:
Тъй като времената, макар и недесетични числа могат да бъдат извадени едно от друго и така намираме най-близкия автобус до тръгването на влака (да речем buses[idx]). Това, разбира се, е само време, което трябва да преработим по стандартния за преработки от този вид начин: привеждаме до най-малката единица (в случая минути) извършваме аритметиката и ако е необходимо конвертираме обратно (в случая не се налага). Например така:
int minutes = ((trainDeparture/100*60+trainDeparture%100) - (buses[idx]/100*60+buses[idx]%100))%1440;
cout << minutes;