Submission #1246016

#TimeUsernameProblemLanguageResultExecution timeMemory
1246016sakurajima24Sirni (COCI17_sirni)C++20
140 / 140
4632 ms418892 KiB
#include <bits/stdc++.h> using namespace std; int n,a[100005],b[100005],h[100005]; struct DSU{ vector<int> par; void init(int n){ par.resize(n+5,0); for(int i=1; i<=n; i++) par[i]=i; } int find(int u){ if(par[u]==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; else{ if(h[u]<h[v]) swap(u,v); if(h[u]==h[v]) h[u]++; par[v]=u; return 1; } } }; DSU dsu; struct edge{ int u,v,w; }; int cnt=0,nxt[10000005]; edge e[40000005]; map<int,bool> m; bool cmp(edge a, edge b){ return a.w<b.w; } main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen(".inp", "r", stdin); // freopen(".out", "w", stdout); cin>>n; for(int i=1; i<=n; i++){ cin>>b[i]; } sort(b+1, b+1+n); int khoibeo=0; for(int i=1; i<=n; i++){ if(!m.count(b[i])){ a[++khoibeo]=b[i]; m[b[i]]=1; } } n=khoibeo; for(int i=1; i<=n; i++){ for(int d=1; a[i]*d<=a[n];){ int boi=a[i]*d; auto it=lower_bound(a+i+1,a+n+1,boi); if(it==a+n+1) break; int j=it-a; int tmp=a[j]/a[i]; if(tmp<=d) d++; else d=tmp; e[++cnt].u=i; e[cnt].v=j; e[cnt].w=(a[j]-boi); } } sort(e+1,e+1+cnt,cmp); dsu.init(n); long long tong=0; for(int i=1; i<=cnt; i++){ if(!dsu.join(e[i].u,e[i].v)) continue; tong+=1LL*e[i].w; } cout<<tong; }

Compilation message (stderr)

sirni.cpp:36:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   36 | main(){
      | ^~~~
#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...