比赛 !信心赛 评测结果 AAAWAAWAWAAWWAAAAAAAAAAAAWWWWAAAAAAWAA
题目名称 《数列》 最终得分 75
用户昵称 梦那边的美好ME 运行时间 2.215 s
代码语言 C++ 内存使用 4.03 MiB
提交时间 2026-01-17 10:41:07
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long

bitset<110000> f,h,g;
ll n,a[110000],c[110000];
ll ans,cnt,mx,y;

bool cmp(ll aa,ll bb){
	return aa>bb;
}

int main(){
    freopen("arrayy.in","r",stdin);
    freopen("arrayy.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
	cin>>n;
    for (int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+1+n,cmp);
    if(a[n]!=a[n-1]){
		cout<<a[n]<<'\n';
		return 0;
	}
    cnt=unique(a+1,a+1+n)-a-1;
	mx=a[1];
    for (int i=0;i<mx;i++) h[i]=1;
    for (int i=1;i<=cnt;i++) f[a[i]]=1;
    for (int i=1;i<=cnt;i++){
        for (int j=a[i];j<a[i-1];j++){
			h[j]=0;
		}
        g=f;
        y=mx/a[i];
        for (int i=0;(i<<1)<=y;y-=(1<<i),i++){
	    	g|=g>>(a[i]*(1<<i));
    	}
        if(y) g|=g>>a[i]*y;
        f|=g&h;
    }
    for (int i=mx-1;i>0;i--){
        if(f[i]) ans=max(ans,i%a[cnt]);
    }
	cout<<ans<<'\n';
    return 0;
}