Условие задачи
| Мое решение |
| #include <stdio.h>
#include <vector>
#include <math.h>
using namespace std;
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int n;
double vmax, d;
scanf("%lf%lf%d", &vmax, &d, &n);
if(n==0)//частный случай - обрабатыватся отдельно
{
printf("00:00\n");
return 0;
}
vector<double> x(n,0.0);//массив расстояний
vector<double> t(n,0.0);//масив моментов времени
int hh, mm;
//чтение данных
for(int i=0; i<n; ++i) {
scanf("%lf %d:%d", &x[i], &hh, &mm);
t[i]=hh*60.0+mm;//преобразование в минуты
}
unsigned long cnt(0);//число съеденных цветов при движении от начала до последнего цветка
bool isN=false;
for(int i=0; i<n; i++) {//перебор цветов при движении от начала до последнего цветка
if((x[i]/vmax+cnt)>=t[i])//если цветок уже вырос при достижении его черепахой
{
if(i==n-1) isN=true;//метка для последнего цветка
cnt+=d;
}
}
//если последний цветок съеден? двойное расстояние+время еды :
время до последнего цветка+время пути назад + время сЪедания цветов на обратном пути;
double time = isN? 2.0*x[n-1]/vmax+n*d : t[n-1]+x[n-1]/vmax+n*d-cnt;
int itime = ceil(time);
printf("%02d:%02d\n", itime/60, itime%60);
return 0;
}
|
| |
Проблема: из 15 тестов для 8 — "Неправильный ответ". Подскажите, пожалуйста, что неправильно в алгоритме?