1735 - 购物停车
时间限制 : 1 秒
内存限制 : 32 MB
小明每周都要开车陪女朋友去商业街购物,商业街是一条笔直的大街,我们把它抽象成是X轴上的一条线段,街上的每个商铺都位于线段上整数点的位置,而顾客可以在线段上的任何一个位置停车,并且每停一次车都需要交一次费用。于是小明想知道如果自己就停一次车,然后步行去之前计划好要去的那些商铺,最后回到停车的位置,那么最短的步行路程是多少。
题目输入
输入的第一行为一个整数t(1<=t<=100),表示测试样例的组数。
接下来输入t组样例,每组输入占两行,第一行输入一个整数n(1<=n<=20),表示小明他们计划要去的商铺的个数,第二行输入n个整数,表示计划要去的那些商铺的位置,位置范围为[0,99]。
题目输出
对于每组输入,输出题目要求的最短的步行路程。
输入/输出样例
输入格式
2 4 24 13 89 37 6 7 30 41 14 39 42
输出格式
152 70
C语言解答
#include<stdio.h> #define INF 0x7fffffff int main() { int t,max,min,n,a; scanf("%d",&t); while(t--) { scanf("%d",&n); max=0,min=INF; while(n--) { scanf("%d",&a); if(a>max)max=a; if(a<min)min=a; } printf("%d\n",2*(max-min)); } return 0; }
C++解答
#include <stdio.h> int main() { int t, n, p, maxi, mini; scanf("%d", &t); while (t--) { scanf("%d", &n); maxi = -100000000; mini = 100000000; while (n--) { scanf("%d", &p); if (p > maxi) maxi = p; if (p < mini) mini = p; } printf("%d\n", (maxi - mini) * 2); } return 0; }
Java解答
import java.util.*; public class Main{ final static Scanner jin=new Scanner(System.in); public static void main(String args[]){ int t=jin.nextInt(); while(t-->0){ int n=jin.nextInt(); int m=jin.nextInt(); int M=m; for(int i=1;i<n;i++){ int x=jin.nextInt(); if(x<m)m=x; if(x>M)M=x; } System.out.println(2*(M-m)); } } }