Submission #1106069

#TimeUsernameProblemLanguageResultExecution timeMemory
1106069nasir_bashirovSirni (COCI17_sirni)C++17
0 / 140
676 ms67232 KiB
// #pragma GCC optimize("O3,unroll-loops") // #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int, int> #define pll pair<ll, ll> #define vi vector<int> #define vl vector<ll> #define vii vector<pii> #define db long double #define vll vector<pll> #define endl '\n' #define all(x) x.begin(), x.end() #define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // #define int long long struct DSU{ vi par; int components; DSU(int sz){ components = sz; par.resize(sz + 5, -1); } int Find(int u){ if(par[u] < 0) return u; else return par[u] = Find(par[u]); } bool Union(int u, int v){ u = Find(u), v = Find(v); if(u != v){ if(par[u] < par[v]){ swap(u, v); } par[u] += par[v]; par[v] = u; components--; return true; } else{ return false; } } }; const int sz = 1e5 + 5; int n, a[sz], mx; ll res = 0; void fmain(){ cin >> n; set<int> st; for(int i = 1; i <= n; i++){ cin >> a[i]; mx = max(mx, a[i]); st.insert(a[i]); } vector<pair<int, pii>> v; for(int i : st){ auto itt = st.upper_bound(i); v.push_back({min(*itt % i, i % *itt), {i, *itt}}); for(int j = i * 2; j <= mx; j += i){ auto it = st.lower_bound(j); if(it != st.end()){ v.push_back({min(*it % i, i % *it), {i, *it}}); } } } sort(all(v)); DSU t(mx); for(auto i : v){ res += i.first * t.Union(i.second.first, i.second.second); } cout << res; } signed main(){ int tmr = 1; // cin >> tmr; while(tmr--){ fmain(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...