我这个程序报错了,应该是结构体比大小时出现了问题(因为跳转):
operator()(_Iterator1 __it1, _Iterator2 __it2) const
{ return *__it1 < *__it2; }
我在程序里找了找,没看见错误的比大小,它又不给错误在哪一行,是想让我玩解密我也没有办法喵,所以该怎么找。
代码:
#include <bits/stdc++.h>
using namespace std;
int t,n,cnt1,cnt2,cnt3,tmp,tmpn,ans[1000010];
struct node{
int num;
double q;
}a[1010],b[1010];
int main(){
cin>>t;
while(t--){
cin>>n;
cnt1=cnt2=cnt3=0;
tmp=0;
for(int i=1;i<=n;i++){
double x;
cin>>x;
if(x<0){
b[++cnt2].q=x;
b[++cnt2].num=i;
}else if(x==0){
tmp=1;
tmpn=i;
}else{
a[++cnt1].q=x;
a[++cnt1].num=i;
}
}
sort(a+1,a+1+cnt1);
sort(b+1,b+1+cnt2);
for(int i=cnt1;i>=1;i--){
if(a[i].q<1){
break;
}
ans[++cnt3]=a[i].num;
}
for(int i=1;i<cnt2;i+=2){
if(b[i].q*b[i+1].q<1){
break;
}
ans[++cnt3]=b[i].num;
ans[++cnt3]=b[i+1].num;
}
if(cnt3==0){
if(a[cnt1].q>b[1].q*b[2].q){
cout<<a[cnt1].num<<endl;
}else{
cout<<min(b[1].num,b[2].num)<<" "<<max(b[1].num,b[2].num)<<endl;
}
}else{
sort(ans+1,ans+1+cnt3);
for(int i=1;i<=cnt3;i++){
cout<<ans[i]<<" ";
}
cout<<endl;
}
}
return 0;
}