#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=2e7+5;
struct edges
{
int X,Y,Z;
};
vector <edges> b;
bool cmp(edges x,edges y)
{
return x.Z<y.Z;
}
int n,x,y,ma; ll res;
int nxt[N],par[N];
bool check[N];
vector <int> a,ve[N];
int acs(int u)
{
if (par[u]<0) return u;
return par[u]=acs(par[u]);
}
bool join(int u,int v)
{
int x=acs(u);
int y=acs(v);
if (x!=y)
{
if (par[x]>par[y]) swap(x,y);
par[x]+=par[y];
par[y]=x;
return true;
}
return false;
}
int main()
{
ios_base::sync_with_stdio(NULL);
cin.tie(NULL); cout.tie(NULL);
cin >> n;
a.resize(n);
for (int i=0;i<n;i++)
cin >> a[i];
sort(a.begin(),a.end());
a.resize(unique(a.begin(),a.end())-a.begin());
n=a.size();
if (a[0]==1)
{
cout << 0;
return 0;
}
for (int i=1;i<=n;i++)
{
nxt[a[i-1]]=i;
par[i]=-1;
}
ma=a[n-1];
for (int i=ma;i>=0;i--)
if (nxt[i]==0) nxt[i]=nxt[i+1];
for (int i=1;i<n;i++)
{
x=a[i-1];
y=nxt[x+1];
b.push_back({i,y,a[y-1]-x});
for (int j=2*x;j<=ma;j+=x)
if (y!=nxt[j])
{
if (b.back().Z>=a[0]) b.pop_back();
y=nxt[j];
b.push_back({i,y,a[y-1]-j});
}
else b.back().Z=a[y-1]-j;
if (b.back().Z>=x) b.pop_back();
}
sort(b.begin(),b.end(),cmp);
res=0;
for (int i=0;i<b.size();i++)
if (join(b[i].X,b[i].Y)) res+=b[i].Z;
cout << res;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |