This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define forr(_a,_b,_c) for(_a = _b; _a <= _c; ++_a)
#define ford(_a,_b,_c) for(_a = (_b) + 1; _a --> _c;)
#define forf(_a,_b,_c) for(_a = _b; _a < _c; ++_a)
#define st first
#define nd second
#define ll long long
#define ull unsigned long long
#define pii pair <int,int>
#define pll pair <ll,ll>
#define piii pair <int,pii>
#define vi vector <int>
#define pb push_back
#define mp make_pair
#define all(x) begin(x),end(x)
#define file "test"
using namespace std;
const int N = 1e5 + 5;
const ll oo = 1e9;
const ll mod = 1e9 + 7;
int par[N],sz[N];
int get (int u){
if (u == par[u])
return u;
return par[u] = get(par[u]);
}
void update (int u, int v){
if (sz[u] < sz[v])
swap(u,v);
par[v] = u;
sz[u] += sz[v];
}
int n,i,a[N],f[10000002];
vector <pii> v[10000002];
ll ans;
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> n;
forr (i,1,n)
cin >> a[i];
sort(a + 1, a + 1 + n);
forr (i,1,n){
if (a[i] != a[i + 1])
f[a[i]] = i;
par[i] = i;
sz[i] = 1;
}
ford (i,10000000,1)
if (!f[i])
f[i] = f[i + 1];
forr (i,1,n){
if (a[i] == a[i + 1])
continue;
int cur = 2 * a[i];
if (i < n)
v[a[i + 1] % a[i]].pb({i,f[a[i + 1]]});
while (cur <= 10000000){
if (!f[cur])
break;
v[a[f[cur]] % a[i]].pb({i,f[cur]});
cur += a[i];
}
}
forr (i,0,10000000)
for (pii k : v[i]){
int p = get(k.st), q = get (k.nd);
if (p != q)
update(p,q), ans += i;
}
cout << ans << "\n";
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... |