NC52279. 坐电梯
描述
小sun非常懒,所以他非常喜欢坐电梯,但是他发现了一个问题:当他在k楼想要坐电梯去1楼时,如果比他高的楼层有人想坐电梯去1楼,他就必须等待,直到电梯把他楼上的人接完了,才能到他的楼层来接他,于是他非常的苦恼。现在他想问问你,如果他知道某个时刻所有想坐电梯的人所在的楼层,他要等多久电梯才能到他的楼层。
关于电梯:
电梯最开始在1楼,每一秒可以上升,或者下降一个楼层。
在同一时刻有多个请求时,电梯会优先处理最高楼层的请求。
输入描述
第一行,两个整数:n,k,代表在当前时刻总共有n个去1楼的请求,小sun在第k楼,数据保证k不为1第二行,共n个整数,每个整数代表一个请求所在的层数。
输出描述
输出一行,他要等待的时间(秒)
示例1
输入:
5 3 1 2 3 5 5
输出:
6
Python3 解法, 执行用时: 1610ms, 内存消耗: 23752K, 提交时间: 2023-04-10 19:51:35
n,k=map(int,input().split()) num=0 s='' for i in input(): if i==' ': if int(s)>num: num=int(s) s='' continue s+=i print(2*num-k-1)
C++ 解法, 执行用时: 116ms, 内存消耗: 424K, 提交时间: 2022-05-03 14:59:20
#include <stdio.h> int main() { int n,k,ma=0,x; scanf("%d%d",&n,&k); while(n--) { scanf("%d",&x); if(x>ma) ma=x; } printf("%d",ma-1+ma-k); return 0; }
C++14(g++5.4) 解法, 执行用时: 224ms, 内存消耗: 8488K, 提交时间: 2019-10-26 17:07:59
#include<bits/stdc++.h> using namespace std; int main(){ int n,m,max,x; cin>>n>>m; for(int i=0;i<n;i++){scanf("%d",&x);if(x>max)max=x;} cout<<2*max-m-1; }
C(clang11) 解法, 执行用时: 121ms, 内存消耗: 8316K, 提交时间: 2020-11-23 16:15:50
#include<stdio.h> int main(){ int n,k,i,c,a=1; scanf("%d%d",&n,&k); for(i=1;i<=n;i++){ scanf("%d",&c); if(c>a)a=c;} a=a-1+a-k; printf("%d\n",a); }