#include <bits/stdc++.h>
using namespace std;
struct Edge
{
int u, v, w;
Edge() {}
Edge(int u, int v, int Weight) : u(u), v(v), w(Weight) {}
bool inline operator<(const Edge &other) const { return w < other.w; }
};
const int MAXN = 1e5;
const int MAXP = 1e7;
int n, nxt[MAXP + 5], par[MAXN + 5], cnt = 0;
vector<int> p;
Edge Ed[60000007];
int fnd(int u) { return u == par[u] ? u : par[u] = fnd(par[u]); }
bool merge(int u, int v)
{
u = fnd(u), v = fnd(v);
if (u == v)
return false;
par[v] = u;
return true;
}
int main()
{
cin.tie(0)->ios::sync_with_stdio(0);
cin >> n;
for (int i = 0; i < n; i++)
{
int x;
cin >> x;
p.push_back(x);
}
sort(p.begin(), p.end());
p.erase(unique(p.begin(), p.end()), p.end());
n = p.size();
for (int i = 0; i < n - 1; i++)
{
nxt[p[i]] = i;
for (int j = p[i] + 1; j < p[i + 1]; j++)
nxt[j] = i + 1;
}
nxt[p[n - 1]] = n - 1;
for (int i = 0; i < n; i++)
{
Ed[cnt++] = Edge(i, nxt[p[i] + 1], p[nxt[p[i] + 1]] % p[i]);
for (int mul = 2 * p[i]; mul <= p[n - 1]; mul += p[i])
{
Ed[cnt++] = Edge(i, nxt[mul], p[nxt[mul]] % p[i]);
mul = p[nxt[mul]] / p[i] * p[i];
}
}
sort(Ed, Ed + cnt);
for (int i = 0; i < n; i++)
par[i] = i;
int Ans = 0;
for (auto &c : Ed)
if (merge(c.u, c.v))
Ans += c.w;
cout << Ans;
}
# | 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... |