#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ii = pair<int, int>;
using vi = vector<int>;
using vl = vector<ll>;
#define dbg(x) cerr << #x << " = " << (x) << endl;
#define raya cerr << " ==================== " << endl;
#define rep(i, a, b) for (auto i = a; i < (b); ++i)
#define sz(x) (int)(x).size()
#define all(x) begin(x), end(x)
int main() {
cin.tie(0)->sync_with_stdio(0);
cin.exceptions(cin.failbit);
int n; cin >> n;
using vii = vector<ii>;
vector<vii> adj(n);
map<int,int> ids;
for (auto i = 0; i < n; i++) {
int x; cin >> x;
if (not ids.count(x)) ids[x]=sz(ids);
}
while(sz(ids)) {
auto it = ids.begin();
auto [p, u] = *it;
ids.erase(it);
auto key = p;
while(1) {
it = ids.lower_bound(key);
if (it == ids.end()) break;
key=it->first;
adj[u].emplace_back(it->second, key % p);
adj[it->second].emplace_back(u, key % p);
key += p - key%p;
}
}
//for(auto& nei: adj) {
// for(auto& [v, w]: nei) cout << v <<","<<w<<" " <<' ';
// cout <<'\n';
//}
ll ans = 0;
priority_queue<ii, vii, greater<ii>> pq;
vector<bool> used(n, 0);
pq.emplace(0, 0);
int taken = 0;
while(sz(pq)) {
auto [d, u] = pq.top(); pq.pop();
if (used[u]) continue;
used[u] = 1;
++taken;
ans+= d;
if (taken == n) break;
for(auto& [v, w]: adj[u]) {
if (not used[v]) pq.emplace(w, v);
}
}
cout << ans <<'\n';
}
# | 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... |