Время черепахи
От: olimp_20  
Дата: 01.07.15 18:14
Оценка:
Условие задачи
  Мое решение
#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 — "Неправильный ответ". Подскажите, пожалуйста, что неправильно в алгоритме?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.