3482 - 2014-Freshman-09-Elevator

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

    有一天,小明来到综B,看到保安在那里愁眉哭脸。小明好奇的走上去看了看,保安的手里有一份电梯升降任务表,由N个正整数组成,这些数字表示电梯按照给定的顺序停留的楼层号。电梯升一层花费5秒钟,降一层花费4秒钟,并且每次停留花费10秒钟。对于每一份任务表,你要计算出完成全部升降任务所花费的总时间。一开始,电梯在第0层,并且最终完成任务时电梯不必一定返回到0层。你能帮助保安算出完成全部升降任务所花费的总时间吗?

题目输入

有多组测试样例。每组测试样例包含一个正整数N,接下来是N个正整数。
在输入中,所有的数字都小于100。当N=0时,表示输入结束。

题目输出

对于每一组测试样例,在一行中输出总时间。

输入/输出样例

输入格式

1 2
3 2 3 1
0

输出格式

20
53

C语言解答

int main(int argc, char* argv[])
{int N,sum,i,a[101];
	while(~scanf("%d",&N))
{if(N==0)break;
for(i=0;i<N;i++){scanf("%d",&a[i]);}
sum=a[0]*5+10*N;
for(i=0;i<N-1;i++){if(a[i]<a[i+1])sum=sum+(a[i+1]-a[i])*5;else sum=sum+(a[i]-a[i+1])*4;}
printf("%d\n",sum);
	}
	return 0;
}

C++解答

#include<stdio.h>
int main()
{
	int i,sum,n;
	int a[100];
	while(scanf("%d",&n)!=EOF)
	{
		if(n==0)
			break;
		sum=0;
		for(i=0;i<n;i++)
			scanf("%d",&a[i]);
		sum+=10*n;
		for(i=0;i<n;i++)
		{
			if(i==0)
				sum+=a[i]*5;
			else if(a[i]>a[i-1])
				sum+=(a[i]-a[i-1])*5;
			else sum+=(a[i-1]-a[i])*4;
		}
		printf("%d\n",sum);
	}
	return 0;
}