#include <bits/stdc++.h>
using namespace std;
#define int long long
struct DSU {
vector<int> parent, sz;
DSU(int n) {
parent.resize(n);
sz.resize(n, 1);
for (int i = 0; i < n; ++i) parent[i] = i;
}
int find(int x) {
return parent[x] == x ? x : parent[x] = find(parent[x]);
}
bool merge(int a, int b) {
a = find(a);
b = find(b);
if (a == b) return false;
if (sz[a] < sz[b]) swap(a, b);
parent[b] = a;
sz[a] += sz[b];
return true;
}
};
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; ++i) cin >> arr[i];
if (n == 1) {
cout << 0;
return 0;
}
sort(arr.begin(), arr.end());
DSU dsu(n);
int m = arr[0];
int max_val = arr.back();
// Preprocess to find all elements
unordered_map<int, vector<int>> value_indices;
for (int i = 0; i < n; ++i) value_indices[arr[i]].push_back(i);
for (int i = 0; i < n; ++i) {
int x = arr[i];
if (x == 0) continue;
for (int k = 2; x * k <= max_val; ++k) {
int y = x * k;
auto it = value_indices.find(y);
if (it != value_indices.end()) {
for (int idx : it->second) {
dsu.merge(i, idx);
}
}
}
}
// Collect components
unordered_map<int, vector<int>> components;
int m_root = -1;
for (int i = 0; i < n; ++i) {
int root = dsu.find(i);
components[root].push_back(arr[i]);
if (arr[i] == m) m_root = root;
}
if (components.size() == 1) {
cout << 0;
return 0;
}
int sum = 0;
for (auto &[root, vals] : components) {
if (root == m_root) continue;
int min_mod = INT_MAX;
for (int x : vals) {
min_mod = min(min_mod, x % m);
}
sum += min_mod;
}
cout << sum;
return 0;
}
# | 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... |