记录编号 196667 评测结果 AAAAAAAAAAAAAAAA
题目名称 [Ural 1031] 火车票 最终得分 100
用户昵称 Gravatarforever 是否通过 通过
代码语言 C++ 运行时间 0.381 s
提交时间 2015-10-22 06:19:00 内存使用 0.46 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<iostream>
#define Min(a,b) ((a)>(b)?(b):(a))
using namespace std;
int L1,L2,L3,C1,C2,C3;
int n,s,t;
long long f[10005],dis[10005];
int main(){
    freopen("rail.in","r",stdin);
	freopen("rail.out","w",stdout);
	scanf("%d%d%d%d%d%d",&L1,&L2,&L3,&C1,&C2,&C3);
	scanf("%d",&n); scanf("%d%d",&s,&t);
	if(s>t) swap(s,t);
	for(int i=2;i<=n;++i) scanf("%lld",&dis[i]);
	memset(f,0x3f,sizeof(f));
	f[s]=0;
	for(int i=s;i<=n;++i)
	  for(int j=i-1;j>=s;--j){
         if(dis[i]-dis[j]<=L1) {
				f[i]=Min(f[i],f[j]+C1); continue;
         }
		 if(dis[i]-dis[j]<=L2) {
				f[i]=Min(f[i],f[j]+C2); continue;
		 }
		 if(dis[i]-dis[j]<=L3) {
				f[i]=Min(f[i],f[j]+C3); continue;
		 }
		 break;
	  }
	printf("%lld",f[t]);
	getchar();getchar();
}