Submission #1106079

#TimeUsernameProblemLanguageResultExecution timeMemory
1106079nasir_bashirovSirni (COCI17_sirni)C++11
112 / 140
5078 ms396856 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; ll res = 0; vi a(sz, 0); void fmain(){ fastio; cin >> n; for(int i = 1; i <= n; i++){ cin >> a[i]; } sort(a.begin() + 1, a.begin() + n + 1); vector<pair<int, pii>> v; for(int i = 1; i <= n; i++){ if(a[i] == a[i - 1]) continue; for(int j = a[i]; j <= a[n]; j += a[i]){ int ind = (j == a[i] ? upper_bound(a.begin() + 1, a.begin() + n + 1, j) : lower_bound(a.begin() + 1, a.begin() + n + 1, j)) - a.begin(); // cout << ind << endl; if(ind > n) break; // cout << i << " " << j << endl; v.push_back({a[ind] % a[i], {a[ind], a[i]}}); j = a[ind] / a[i] * a[i]; } } sort(all(v)); DSU t(a[n]); for(auto i : v){ // cout << i.first << " " << i.second.first << " " << i.second.second << endl; 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...