HR02 @ 2023-09-05 13:26:25
我想说,样例输进去都好好运行出的答案,然后我自己电脑上也能正常跑这个程序,我不懂为什么会全部re,我自己测试输入输出都很正常,而且我不久前做另一道排序的题的时候,也都是全re,我找了很久也没发现问题所在,代码放在下面,如果有大佬能指出问题所在就好了,谢谢。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=5*10^6+10;
ll n,a[N],b[N],k;
int m=1;
void merge(int l,int r){
if(l>=r) return;
int mid=(l+r)/2,cnt=l;
int i=l,j=mid+1;
while(i<=mid&&j<=r)
if(a[i]<=a[j]) b[cnt++]=a[i++];
else b[cnt++]=a[j++];
while(i<=mid) b[cnt++]=a[i++];
while(j<=r) b[cnt++]=a[j++];
for(m=l;m<=r;++m) a[m]=b[m];
}
void mergesort(int l,int r){
if(l>=r) return;
int mid=(l+r)/2;
mergesort(l,mid);
mergesort(mid+1,r);
merge(l,r);
}
int main(){
scanf("%lld%lld",&n,&k);
for(;m<=n;++m)
scanf("%lld",&a[m]);
mergesort(1,n);
printf("%lld",a[k+1]);
return 0;
}
by ax_by_c @ 2023-09-05 13:42:53
c++ 里面的科学计数法用的不是 ^ ,是 e,也就是说 10 的 6 次方应该是 1e6
by _Lyk_def @ 2023-09-05 13:44:55
^是异或,不是幂运算
by HR02 @ 2023-09-05 13:47:37
@tiaotiao2011_1 原来是这么一回事,最近一直重学老是这么敲代码,有时候数据随便输大了程序就炸了,这几天一直都这样,非常烦,哈哈,感谢您提醒
by zkz19853166298 @ 2023-09-17 10:49:45
开O2