代码厌氧求问
  • 板块学术版
  • 楼主wyh12623
  • 当前回复4
  • 已保存回复4
  • 发布时间2025/7/27 16:13
  • 上次更新2025/7/27 20:46:49
查看原帖
代码厌氧求问
1023246
wyh12623楼主2025/7/27 16:13

代码加了O2就RE,不加就AC了,请问这是为什么?

附代码:

#include<bits/stdc++.h>
using namespace std;
long long n,k,cnt1,cnt2,a[1000010],s1[1000010],s2[1000010],ans=INT_MAX;
int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		if(a[i]<0)
			cnt2++;
		else
			cnt1++;
	}
	sort(a+1,a+1+n);
	for(int i=cnt2+1;i<=n;i++)
		s1[i-cnt2]=a[i];
	for(int i=cnt2;i>0;i--)
		s2[cnt2-i+1]=abs(a[i]);
	if(cnt1>=k)
		ans=min(ans,s1[k]);
	if(cnt2>=k)
		ans=min(ans,s2[k]);
	for(int i=max((long long)1,k-cnt2);i<=cnt1;i++)
		ans=min(ans,s1[i]+s2[k-i]+min(s1[i],s2[k-i]));
	cout<<ans;
	return 0;
}
2025/7/27 16:13
加载中...