记录编号 605452 评测结果 TTTTTTTTTWAWWTAAAWWT
题目名称 4019.呜呜呜 最终得分 20
用户昵称 Gravatar李奇文 是否通过 未通过
代码语言 C++ 运行时间 21.572 s
提交时间 2025-09-01 17:38:39 内存使用 42.82 MiB
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+5;
int n,a[N],b[N],c[N],f[N],ff[N];
bool t[N];
int find(int x){
	return f[x]==x?x:f[x]=find(f[x]);
}
void check(int x,int y,int &ans,int cc){
	x=find(x),y=find(y);
	if(x==y) return;
	ans=max(ans,a[x]*b[y]*cc);
	ans=max(ans,a[y]*b[x]*cc);
	if(a[x]<a[y]){
		f[x]=y;
		a[y]=max(a[y],a[x]);
		b[y]=max(b[y],b[x]);
	}else{
		f[y]=x;
		a[x]=max(a[x],a[y]);
		b[x]=max(b[x],b[y]);
	}
}
signed main(){
	//std::ios::sync_with_stdio(false);
	//std::cin.tie(nullptr);
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++) cin>>b[i];
	for(int i=1;i<=n;i++) cin>>c[i];
	for(int i=1;i<=n;i++){
		ff[i]=i;
		f[i]=i;
	}
	sort(ff+1,ff+1+n,[&](int i,int j){
		return c[i]>c[j];
	});
	int ans=0;
	for(int i=1;i<=n;i++){
		int d=ff[i];
		t[d]=1;
		if(d>1&&t[d-1]) check(d,d-1,ans,c[d]);
		if(d<n&&t[d+1]) check(d,d+1,ans,c[d]);
	}
	cout<<ans<<"\n";
	return 0;
}