样例能过,但是全wa了,求助大佬
查看原帖
样例能过,但是全wa了,求助大佬
837296
mobai4876162楼主2023/3/10 18:26
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void swap(int (*arr)[3],int l,int r){
    int temp;
    temp = arr[l][2];
    arr[l][2] = arr[r][2];
    arr[r][2] = temp;

    temp = arr[l][1];
    arr[l][1] = arr[r][1];
    arr[r][1] = temp;

    temp = arr[l][0];   
    arr[l][0] = arr[r][0];
    arr[r][0] = temp;
}


void quick_sort(int (*arr)[3],int l, int r){
    if(l>=r)return;
    int x = l - 1;
    int y = r + 1;
    int pivot = arr[(l+r)>>1][2];
    while(x < y){
        do ++x; while(arr[x][2] < pivot);
        do --y; while(arr[y][2] > pivot);
        if(x < y){swap(arr,x,y);}
    }
    quick_sort(arr,l,x);
    quick_sort(arr,x+1,r);
}

int arr[50005][3];

int main(void){
    int N;
    double sum = 0;
    double distance;
    scanf("%d",&N);
    for(int i=0; i<N; i++){
        scanf("%d%d%d",&arr[i][0],&arr[i][1],&arr[i][2]);
    }

    quick_sort(arr,0,N-1);

    for(int i=1; i<N; i++){
        sum += sqrt((arr[i][0]-arr[i-1][0])*(arr[i][0]-arr[i-1][0]) + (arr[i][1]-arr[i-1][1])*(arr[i][1]-arr[i-1][1]) + (arr[i][2]-arr[i-1][2])*(arr[i][2]-arr[i-1][2]));
    }

    printf("%.3lf",sum);
    return 0;
}
2023/3/10 18:26
加载中...