代码加了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;
}