求对做法的正确性的hack
查看原帖
求对做法的正确性的hack
593299
Qerucy楼主2024/9/4 21:01

rt,通过对 aa 排序去重,然后把 ai−ai+1ai-a_{i+1} 装入堆中求答案,感觉是对的但是 60pts60pts,求 hack。

代码:

#include<bits/stdc++.h>

using namespace std;

#define int long long

int n;
int a[1000010];
int ans[2];
int t;
int cnt;

bool cmp(int a,int b){
	return a>b;
}

struct node{
	int id,x,y;
	bool operator <(const node &A)const{
		return x<A.x;
	}
};

priority_queue<node>q;

signed main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
	}
	sort(a+1,a+1+n,cmp);
	n=unique(a+1,a+1+n)-a-1;
	a[n+1]=0;
	for(int i=1;i<=n;i++){
		q.push((node){i,a[i]-a[i+1],a[i]});
	}
	while(!q.empty()){
		node now=q.top();
		q.pop();
		if(now.id<=t) continue;
		ans[cnt]+=now.y;
		cnt=(cnt+1)%2;
		t=now.id;
	}
	printf("%lld",ans[0]-ans[1]);
	return 0;
}
2024/9/4 21:01
加载中...