Submission #1106097

#TimeUsernameProblemLanguageResultExecution timeMemory
1106097nasir_bashirovAwesome Arrowland Adventure (eJOI19_adventure)C++17
0 / 100
17 ms102400 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; vii g[sz * 100]; ll res = 0; void fmain(){ fastio; cin >> n; set<int> st; for(int i = 1; i <= n; i++){ cin >> a[i]; mx = max(mx, a[i]); st.insert(a[i]); } for(int i : st){ auto itt = st.upper_bound(i); if(itt != st.end()) g[*itt % i].push_back({i, *itt}); for(int j = i * 2; j <= mx; j += i){ auto it = st.lower_bound(j); if(it != st.end()){ g[*it % i].push_back({i, *it}); j = *it / i * i; } } } DSU t(mx); for(int i = 0; i <= 1e7; i++){ for(pii j : g[i]){ res += t.Union(j.first, j.second) * i; } } 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...