站外题求助
  • 板块学术版
  • 楼主Scaramouche_LZX
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/12/28 13:52
  • 上次更新2023/10/24 06:20:13
查看原帖
站外题求助
705854
Scaramouche_LZX楼主2022/12/28 13:52

莫名其妙CE

#include<bits/stdc++.h>
using namespace std;
int a[25005],b[25005],sep[25005];
int n,sum;
int cmp1(const void *x,const void *y){
	int i=*(int *)x;
	int j=*(int *)y;
	return b[i]!=b[j]?b[j]-b[i]:a[i]-a[j];
}
int cmp2(const void *x,const void *y){
	int i=*(int *)x;
	int j=*(int *)y;
	return a[i]!=a[j]?a[i]-a[j]:b[j]-b[i];
}
void f(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i]>>b[i];
		sum+=b[i];
		sep[i]=i;
	}
}
void w(){
	qsort(sep,n,sizeof(int),cmp1);
	int ans,tot=0,h=0;
	for(int i=0;i<n;i++)
		if(a[sep[i]]>h){
			tot+=a[sep[i]]-h;
			h=b[sep[i]];
		}
		else h+=b[sep[i]]-a[sep[i]];
	ans=tot+sum;
	qsort(sep,n,sizeof(int),cmp2);
	tot=h=0;
	for(int i=0;i<n;i++)
		if(a[sep[i]]>h){
			tot+=a[sep[i]]-h;
			h=b[sep[i]];
		}
		else h+=b[sep[i]]-a[sep[i]];
	ans=min(ans,tot+sum);
	cout<<ans;
}
int main(){
	f();
	w();
	return 0;
}

题目:

2022/12/28 13:52
加载中...