Submission #1167408

#TimeUsernameProblemLanguageResultExecution timeMemory
1167408warrennSirni (COCI17_sirni)C++20
84 / 140
1075 ms851968 KiB
#include<bits/stdc++.h> using namespace std; //#define int long long const int maxn=1e7+2; int dsu[maxn]; int nxt[maxn]; vector<pair<int,pair<int,int> > >edges; int fin(int a){ if(dsu[a]==a)return a; return dsu[a]=fin(dsu[a]); } void merg(int a,int b){ a=fin(a); b=fin(b); if(a==b)return; dsu[a]=b; } signed main(){ int n; cin>>n; for(int q=1;q<=maxn;q++){ dsu[q]=q; } vector<int>p; for(int q=1;q<=n;q++){ int t; cin>>t; p.push_back(t); } sort(p.begin(),p.end()); p.erase(unique(p.begin(),p.end()),p.end()); int cur=0; for(int q=1;q<=maxn;q++){ while(cur<p.size() && p[cur]<q)cur++; if(cur!=p.size()){ nxt[q]=p[cur]; } else{ break; } } for(int q=1;q<p.size();q++){ edges.push_back({p[q]%p[q-1],{p[q],p[q-1]}}); } for(auto r : p){ for(int q=r;q<=maxn;q+=r){ if(nxt[q]!=0){ edges.push_back({nxt[q]%r,{r,nxt[q]}}); } else break; } } sort(edges.begin(),edges.end()); int ans=0; for(auto r : edges){ int w=r.first; int u=r.second.first; int v=r.second.second; if(fin(u)!=fin(v)){ merg(u,v); ans+=w; } } cout<<ans<<endl; }

Compilation message (stderr)

sirni.cpp: In function 'int main()':
sirni.cpp:26:15: warning: iteration 10000001 invokes undefined behavior [-Waggressive-loop-optimizations]
   26 |         dsu[q]=q;
      |         ~~~~~~^~
sirni.cpp:25:18: note: within this loop
   25 |     for(int q=1;q<=maxn;q++){
      |                 ~^~~~~~
#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...