求助!p2234营业额统计0分
  • 板块灌水区
  • 楼主aikyon_lz2022
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/8/26 10:24
  • 上次更新2023/11/3 01:09:23
查看原帖
求助!p2234营业额统计0分
763794
aikyon_lz2022楼主2023/8/26 10:24
#include<bits/stdc++.h>
using namespace std;
int n,a[32768],cnt=0;
struct list1{
	int sz;//数字 
	int diz;//地址 
	int pre;
	int nxt;
}b[32768];
bool cmp(list1 x,list1 y)
{
	return x.sz<y.sz;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		b[i].sz=a[i];
		b[i].diz=i;
	}
	sort(b+1,b+1+n,cmp);//b数组排序 
	b[0].pre=-1000000;//特判1,n前驱后继 
	b[n+1].nxt=1000000;
	for(int i=1;i<=n;i++)//建链表 
	{
		b[i].pre=b[i-1].diz;
		b[i].nxt=b[i+1].diz;
	}
	for(int i=n;i>=1;i--)
	{
		cnt+=min(abs(a[b[i].pre]-a[b[i].diz]),abs(a[b[i].nxt]-a[b[i].diz]));
		b[b[i].pre].nxt=b[i].nxt;
		b[b[i].nxt].pre=b[i].pre;//删数 
	}
	cout<<cnt;
	return 0;
}
2023/8/26 10:24
加载中...