2e5个1e6的数字,最大两个数的mod值
排序,从后往前,找小于k个a[i]的最大数.
贪心一下就好.
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#ifdef noob
#define debug(x) std::cerr << #x << " = " << (x) << std::endl
#else
#define debug(...)
#endif
using namespace std;
typedef long long LL;
const int MAXN = 2e5 + 17;
const int MOD = 998244353;
int a[MAXN];
int main()
{
#ifdef noob
freopen("Input.txt","r", stdin);
freopen("Output.txt", "w", stdout);
#endif
int n;
cin>>n;
for (int i = 0; i < n; ++i)
{
cin>>a[i];
}
sort(a, a+n);
int ans = 0;
for (int i = n-1; i > -1; --i)
{
if(ans>=a[i]) break;
for (int j = 1; ; ++j)
{
int x = a[lower_bound(a, a+n, j*a[i])-a-1];
if(x>=a[i]) ans = max(ans,x%a[i]);
if(x==a[n-1]) break;
}
}
cout<<ans<<endl;
return 0;
}