Submission #1106860

#TimeUsernameProblemLanguageResultExecution timeMemory
1106860vjudge1Sirni (COCI17_sirni)C++14
28 / 140
642 ms786432 KiB
#include <bits/stdc++.h> #define ii pair<int, int> #define fi first #define se second using namespace std; using ll = long long; const int nx=1e5+5; int n, a[nx], par[nx]; ll ans=0; vector<int> rar; vector<pair<int, ii>> ed; int find(int u) { if(!par[u]) return u; return par[u]=find(par[u]); } bool join(int u, int v) { u=find(u); v=find(v); if(u==v) return 0; par[v]=u; return 1; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i = 1; i <= n; i++) cin>>a[i], rar.emplace_back(a[i]); sort(rar.begin(), rar.end()); rar.erase(unique(rar.begin(), rar.end()), rar.end()); n=rar.size(); vector<int> last(rar.back() + 100, 0); for(int i = 1; i <= n; i++) a[i]=rar[i-1], last[a[i]]=i; for(int i = a[n] - 1; i >= 1; i--) { if(last[i]) continue; last[i]=last[i+1]; } for(int i = 1; i <= n; i++) { if(last[a[i]+1]) ed.push_back({a[last[a[i]+1]]%a[i], {i, last[a[i]+1]}}); for(int j = 2*a[i]; j < a[n]; j+=a[i]) if(last[j]) ed.push_back({a[last[j]]%a[i], {i, last[j]}}); } sort(ed.begin(), ed.end()); for(auto it:ed) if(join(it.se.fi, it.se.se)) ans+=it.fi; cout<<ans; }

Compilation message (stderr)

sirni.cpp: In function 'int main()':
sirni.cpp:41:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   41 |         if(last[i])
      |         ^~
sirni.cpp:43:13: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   43 |             last[i]=last[i+1];
      |             ^~~~
#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...