【玄关】求调,WAon test #2
查看原帖
【玄关】求调,WAon test #2
466596
MorningStarCzy楼主2025/2/7 18:34
#include<bits/stdc++.h>
using namespace std;
int a[100005];
void Solve()
{
	int n,l,r,maxx=-1,minn=0x3f3f3f3f;
	long long sum=0;
	cin>>n>>l>>r;
	for(int i=1;i<=n;i++) cin>>a[i];
	sort(a+l,a+r);
	if(l!=1) sort(a+1,a+l-1);
	if(r!=n) sort(a+r+1,a+n+1);
//	for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;
	for(int i=l;i<=r;i++) sum+=a[i];
	long long sum1=0,sum2=0;
	if(l==1&&r==n) cout<<sum;
	else if(l==1&&r!=n)
	{
		int j=r;
		for(int i=r+1;i<=n&&j>=l;i++,j--)
		{
			if(a[j]<=a[i]) break;
			sum1+=a[j],sum2+=a[i];
		}
		cout<<sum-sum1+sum2;
	}
	else if(l!=1&&r==n)
	{
		int j=r;
		for(int i=l-1;i>=1&&j>=l;i--,j--)
		{
			if(a[j]<=a[i]) break;
			sum1+=a[j],sum2+=a[i];
		}
		cout<<sum-sum1+sum2;
	}
	else
	{
		long long ans=0x3f3f3f3f3f3f3f3f;
		int j=r;
		for(int i=l-1;i>=1&&j>=l;i--,j--)
		{
			if(a[j]<=a[i]) break;
			sum1+=a[j],sum2+=a[i];
		}
		ans=min(ans,sum-sum1+sum2);
		j=r;sum1=sum2=0;
		for(int i=r+1;i<=n&&j>=l;i++,j--)
		{
			if(a[j]<=a[i]) break;
			sum1+=a[j],sum2+=a[i];
		}
		ans=min(ans,sum-sum1+sum2);
		cout<<ans;
	}
	cout<<endl;
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	int T;cin>>T;
	while(T--) Solve();
	return 0;
}

别说我WA on test 2 就来问,因为即使有了数据也没什么用

2025/2/7 18:34
加载中...