建议降橙
查看原帖
建议降橙
1152799
wsy_I楼主2024/9/1 14:50

rt,求出前3大值,加上一点判断,就A了:

#include<bits/stdc++.h>
using namespace std;
int a[200010],n,mx1,mx2,mx3;
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++){
		if(a[i]>mx1) mx1=a[i];
	}
	for(int i=1;i<=n;i++){
		if(a[i]>mx2&&a[i]<mx1) mx2=a[i];
	}
	for(int i=1;i<=n;i++){
		if(a[i]>mx3&&a[i]<mx2) mx3=a[i];
	}
	if(mx3==0) cout<<min(mx1%mx2,mx2%mx1);
	else if(mx2==0) cout<<-1;
	else cout<<max(mx3,mx1%mx2);
	return 0;
}

2024/9/1 14:50
加载中...