求助,O(N)做法90pt,WA on test4
查看原帖
求助,O(N)做法90pt,WA on test4
852827
Mr_yeh楼主2024/10/7 20:24
#include<bits/stdc++.h>
using namespace std;
#define int long long
map<int,int>mp;
signed main(){
	int n,mx1=-1,mx2=-1,ans1=-1,ans2=-1,cnt=0;
	scanf("%lld",&n);
	for(int i=1;i<=n;i++){
		int a;
		scanf("%lld",&a);
		if(!mp[a]){cnt++;mp[a]=1;}
		if(i<=1){
			mx1=a;
			continue;
		}
		if(a>mx1){
			mx2=mx1;
			mx1=a;
		}else{
			if(a>mx2&&a!=mx1) mx2=a;
		}
		int b;
		b=mx2%mx1;
		if(b>ans1){
			ans2=ans1;
			ans1=b;
		}else{
			if(b>ans2&&b!=ans1) ans2=b;
		}
		b=mx1%mx2;
		if(b>ans1){
			ans2=ans1;
			ans1=b;
		}else{
			if(b>ans2&&b!=ans1) ans2=b;
		}		
		//printf("ans1=%d ans2=%d mx1=%d mx2=%d\n",ans1,ans2,mx1,mx2);
	}
	if(cnt<=2) printf("-1\n");
	else printf("%lld\n",ans2);
	return 0;
}

2024/10/7 20:24
加载中...