如果报错
  • 板块灌水区
  • 楼主lucy2012
  • 当前回复10
  • 已保存回复10
  • 发布时间2024/8/18 15:47
  • 上次更新2024/8/18 18:40:06
查看原帖
如果报错
1252442
lucy2012楼主2024/8/18 15:47

我这个程序报错了,应该是结构体比大小时出现了问题(因为跳转):

 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;
}
2024/8/18 15:47
加载中...