P2234爆零求助
查看原帖
P2234爆零求助
421451
ReqCxmChtChr楼主2021/12/4 18:40
#include<bits/stdc++.h>
using namespace std;
vector<pair<int,int> >a;
int get(int day){
    if(a[day].second==1){
        return a[day].first;
    }
    int i=day,j=day;bool flag=false;
    while(a[i].second>=a[day].second&&a[j].second>=a[day].second){
        i--,j++;
        if(i<0){
            i=0;
            flag=true;
        }
    }
    if(flag){
        return abs(a[j].first-a[day].first);
    }
    return min(abs(a[i].first-a[day].first),abs(a[j].first-a[day].first));
}
int main(){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        int t;
        scanf("%d",&t);
        a.push_back(make_pair(t,i));
    }
    sort(a.begin(),a.end());
    long long ans=0;
    for(int i=0;i<n;i++){
        ans+=get(i);
    }
    printf("%d",ans);
    //system("pause");
}
2021/12/4 18:40
加载中...