思路如下:用一个整型数组存楼层,0号元素为0(开始停在0层),每读入一个元素,和上一个比较,更大说明是上升,总时长加上楼层差*6,反之说明是下降,总时长加上楼层差*4。最后再管停留时间,也就是所有元素个数*5。
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<bits/stdc++.h>
#include<stdlib.h>
#include<time.h>using namespace std;
typedef long long LL;const int maxn = 100010;
const int MOD = 1000000007;
const int INF = 1000000000;//INF:下确界
const LL SUP = (1LL<<63)-1;//SUP:上确界
const double eps = 1e-5;int main(){int n;scanf("%d",&n);int A[maxn] = {0};A[0] = 0;//起初在0thLL total_time = 0;for(int i=1;i<=n;i++){scanf("%d",&A[i]);if(A[i]>A[i-1])total_time += (A[i]-A[i-1])*6;else total_time +=(A[i-1]-A[i])*4;}total_time += n*5; printf("%lld\n",total_time);return 0;
}