洛谷 P5143 攀爬者

洛谷 P5143 攀爬者

img

错了三个测试点

#include<iostream>
#include<cmath>
#include<algorithm>

using namespace std;

struct height{
    double x,y,z;
};

bool cmp(height x,height y){
    return x.z<y.z;
}

double sum;
height num[10010];
int n;

int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>num[i].x>>num[i].y>>num[i].z;
    }
    sort(num+1,num+n+1,cmp);
//    for(int i=1;i<n;i++){
//        int k=i;
//        for(int j=i;j<=n;j++){
//            if(num[k].z>num[j].z){
//                k=j;
//            }
//        }
//        swap(num[k],num[i]);
//    }  快排会超时
    for(int i=1;i<n;i++){
        sum+=sqrt((num[i].x-num[i+1].x)*(num[i].x-num[i+1].x)+(num[i].y-num[i+1].y)*(num[i].y-num[i+1].y)+(num[i].z-num[i+1].z)*(num[i].z-num[i+1].z));
    }
    printf("%0.3f",sum);
    return 0;
}

img