比赛 20090916练习赛 评测结果 AWAAWAAAAA
题目名称 护卫队 最终得分 80
用户昵称 TBK 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-10-17 21:08:14
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <iomanip>
using namespace std;
double r[1000],s;
int b,c,d,l,m;
struct fun
{
	int a;
	int k;
}f[1000];
int main(void)
{
	freopen ("convoy.in","r",stdin);
	freopen ("convoy.out","w",stdout);
	scanf("%d%d%d",&b,&c,&d);
	scanf("%d%d",&f[0].a,&f[0].k); 
	for (l=1;l<d;l++) 
	{
		scanf("%d%d",&f[l].a,&f[l].k); 
		f[l].a+=f[l-1].a;
	}
    r[0]=(double)c/f[0].k*60;   
    for (l=1;l<d;l++)   
    {   
        s=f[l].k;
        r[l]=r[l-1]+(double)c/s*60;   
        for (m=l-1;m>=0;m--)
            if (((m==0)&&(f[l].a<=b))||((f[l].a-f[m-1].a)<=b))   
            {
                if (f[m].k<s) s=f[m].k;
                if (((m==0)&&((double)c/s*60<=r[l]))||((r[m-1]+(double)c/s*60)<r[l])) 
				{
					if (m!=0) r[l]=r[m-1]+(double)c/s*60;  
						else r[l]=(double)c/s*60;
				}
            }   
    }   
	printf("%.1lf",r[d-1]);
	fclose(stdin);
	fclose(stdout);
	return 0;
}