为啥编译不过啊??
  • 板块灌水区
  • 楼主bktchizhi_fzh
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/10/17 19:05
  • 上次更新2023/10/27 07:06:42
查看原帖
为啥编译不过啊??
520291
bktchizhi_fzh楼主2022/10/17 19:05
#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
#define ll long long
using namespace std;
int t,n;
ll a[100005],ans;
multiset<ll>q1,q2;
int main(){
	scanf("%d",&t);
	while(t--){
		q1.clear();q2.clear();
		scanf("%d",&n);
		ans=-99999999999999999;
		for(int i=1;i<=n;i++){
			scanf("%lld",&a[i]);
			if(i!=1&&i!=2)q2.insert(a[i]);
		}	
		q1.insert(a[1]);
		for(int i=2;i<n;i++){
			auto it0=q1.lower_bound(a[i]);
			auto it1=q2.upper_bound(a[i]);
			if(it0!=q1.begin()&&it1!=q2.end()){
				ans=max(ans,(*prev(it0))*a[i]*(*it1));
				ans=max(ans,(*prev(it0))*a[i]*(*q2.end()));
				ans=max(ans,(*q1.begin())*a[i]*(*it1));
				ans=max(ans,(*q1.begin())*a[i]*(*q2.end())); 
			} 
			q1.insert(a[i]);
			q2.erase(q2.find(a[i+1]));
		}
		if(ans==-99999999999999999)printf("-1\n");
		else printf("%lld\n",ans);
	}
	return 0;
}

在洛谷上可以编译,但在c++和别的地方都不行

2022/10/17 19:05
加载中...