# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1057657 | vjudge1 | Sirni (COCI17_sirni) | C++17 | 2988 ms | 397068 KiB |
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>
using namespace std;
#define task "test"
#define FOR(i, a, b) for(int i = (a); i <= (b); ++i)
#define FORD(i, a, b) for(int i = (a); i >= (b); --i)
#define sz(a) (int)(a).size()
#define all(a) (a).begin(), (a).end()
#define bit(s, i) (((s) >> (i)) & 1)
#define ii pair <int, int>
#define vii vector <ii>
#define vi vector <int>
#define fi first
#define se second
#define ll long long
#define eb emplace_back
#define pb push_back
#define __builtin_popcount __builtin_popcountll
void solve();
int32_t main() {
if(fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
cin.tie(0)->sync_with_stdio(0);
int tc = 1; // cin >> tc;
FOR(i, 1, tc) {
solve();
}
}
const int N = 1e5+5;
int n;
vi a;
vector <pair<ii, int>> edges;
struct DSU {
int p[N];
DSU () {
fill(begin(p), end(p), 0);
}
int find(int a) {
return (p[a] == 0) ? a : p[a] = find(p[a]);
}
void unite(int a, int b) {
a = find(a); b = find(b);
if(a != b) {
p[b] = a;
}
}
} dsu;
void solve() {
cin >> n;
FOR(i, 1, n) {
int x; cin >> x;
a.eb(x);
}
sort(all(a));
a.erase(unique(all(a)), a.end());
FOR(i, 0, sz(a)-1) {
FOR(j, 2, a.back() / a[i]) {
int r = lower_bound(all(a), a[i]*j) - a.begin();
if(r < sz(a)) {
edges.pb({{i, r}, a[r] % a[i]});
j = a[r] / a[i];
}
}
}
FOR(i, 1, sz(a) - 1) edges.pb({{i-1, i}, a[i] % a[i-1]});
sort(all(edges), [] (pair <ii, int> x, pair <ii, int> y) {return x.se < y.se;});
ll cost = 0;
FOR(i, 0, sz(edges)-1) {
int u = edges[i].fi.fi, v = edges[i].fi.se, w = edges[i].se;
++u; ++v;
if(dsu.find(u) != dsu.find(v)) {
dsu.unite(u, v);
cost += w;
}
}
cout << cost;
}
Compilation message (stderr)
# | 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... |