POJ 2565

模拟,照着说的做就行了。

#include<cstdio>

#include<cstring>

#include<algorithm>

using namespace std;

const double eps=1e-8;

struct data

{

    int h,m,s;

    double tot,speed;

    data(int _h,int _m,int _s)

    {

        h=_h;m=_m;s=_s;

        tot=_h*60+_m+_s/60.0;

        speed=0;

    }

    data(){}

    void print()

    {

        if(speed<eps)

            printf("-\n");

        else

        {

            speed+=1/120.0;

            int a=(int)speed,b=(int)(60.0*(speed-(int)speed));

            printf("%d:",a);

            if(b<10)

                printf("0%d min/km\n",b);

            else

                printf("%d min/km\n",b);

        }

    }

    data operator+(const data &b)const

    {

        data a;

        a.h=h+b.h;

        a.m=m+b.m;

        a.s=s+b.s;

        a.tot=a.h*60.0+a.m+a.s/60.0;

        a.speed=0;

        return a;

    }

};

int main()

{

    int n,id;

    double d;

    scanf("%d%lf",&n,&d);

    while(scanf("%d",&id)!=EOF)

    {

        data a(0,0,0);

        int h,m,s;

        printf("%3d: ",id);

        bool flag=false;

        for(int i=0;i<n;i++)

        {

            char ss[30];

            scanf("%s",ss);

            if(ss[0]=='-'||flag)

            {

                flag=true;

                continue;

            }

            sscanf(ss,"%d:%d:%d",&h,&m,&s);

            a=a+data(h,m,s);

        }

        if(!flag)

            a.speed=a.tot/d;

        a.print();

    }

    return 0;

}

  

你可能感兴趣的:(poj)