列表

详情


NC205236. 牛客蚂蚁三兄弟

描述

在一条细毛线上,趴着三只蚂蚁(细毛线视为直线)。三只蚂蚁都有一个初始位置,现在蚂蚁们都想离自己的兄弟近一点,但蚂蚁只能在这个细线上移动。问:能否使蚂蚁最多移动一次(即:蚂蚁可以向左移动或向右移动或者不动),
使三只蚂蚁距离的和最小。

输入描述

先输入一个数n(1<=n<=1000),表示有n组数据;
接下来的n行,每行输入三个数a,b,c(1<=a,b,c<=10^9)表示蚂蚁们的初始位置;

输出描述

输出一个数,表示三个蚂蚁距离之和的最小值。

示例1

输入:

4
3 3 4
10 20 30
5 5 5
2 4 3

输出:

0
36
0
0

原站题解

import java.util.Scanner;
public class Main {
public static void main(String[] arg) {
Scanner scanner = new Scanner(System.in);
// todo
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

C(clang 3.9) 解法, 执行用时: 3ms, 内存消耗: 476K, 提交时间: 2020-04-18 10:38:03

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}
int main()
{
int n;
int i;
long long a[2],sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%lld %lld %lld",&a[0],&a[1],&a[2]);
qsort(a,3,sizeof(a[0]),cmp);
sum=a[2]-a[1]+a[1]-a[0]+a[2]-a[0];
if(sum-4<=0)
printf("0\n");
else
printf("%lld\n",sum-4);
}
}

C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 504K, 提交时间: 2020-04-18 09:30:05

#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, a[3];
long long ans;
scanf("%d",&n);
while(n--){
scanf("%d %d %d",&a[0],&a[1],&a[2]);
sort(a,a+3);
ans = 2*(a[2]-a[0]);
if(ans<=4)
ans = 0;
else
ans -= 4;
printf("%lld\n",ans);
}
return 0;
}

C++11(clang++ 3.9) 解法, 执行用时: 4ms, 内存消耗: 496K, 提交时间: 2020-04-18 09:48:29

#include<cstdio>
#include<cmath>
#include<cstring>
int main(){
int n;
int a,b,c;
long long sum=0;
scanf("%d",&n);
while(n--){
scanf("%d%d%d",&a,&b,&c);
sum=fabs(a-b)+fabs(a-c)+fabs(b-c);
sum-=4;
if(sum<0){
sum=0;
}
printf("%lld\n",sum);
}
}

上一题