Submission #1106937

#TimeUsernameProblemLanguageResultExecution timeMemory
1106937hoangnoobproSirni (COCI17_sirni)C++17
84 / 140
692 ms635468 KiB
#include<bits/stdc++.h> using namespace std; #define mod 1000000007 #define nmax 10000007 #define fi first #define se second #define ll int ll t=1,n,m=0,i=0,j=0,d=0,x=0,k=0,y=0,z,a[nmax],f[nmax],h[nmax],cnt=0,pa[nmax],sz[nmax]; long long kq=0; struct hm { ll a,b,c; }v[nmax]; bool cmp(hm a,hm b) { return a.c<b.c; } ll findset(ll u) { if(pa[u]==u)return u; return pa[u]=findset(pa[u]); } int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n; for(i=1;i<=n;++i) { cin>>a[i]; x=max(x,a[i]); if(f[a[i]]) { i--; n--; continue; } sz[i]=1; pa[i]=i; f[a[i]]=a[i]; } sort(a+1,a+n+1); for(i=x;i>=1;--i) { if(!f[i])f[i]=f[i+1]; } d=0; f[0]=f[1]-1; for(i=1;i<=x;++i) { if(f[i]!=f[i-1])d++; h[i]=d; } for(i=1;i<=n;++i) { for(j=a[i];j<=x;j+=a[i]) { y=j; if(j==a[i])y++; if(y>x)break; // if(f[y]<j+a[i]) { v[++cnt].a=i; v[cnt].b=h[y]; v[cnt].c=f[y]%a[i]; } } } sort(v+1,v+cnt+1,cmp); kq=0; for(i=1;i<=cnt;++i) { x=findset(v[i].a); y=findset(v[i].b); if(x!=y) { if(sz[x]<sz[y])swap(x,y); sz[x]+=sz[y]; pa[y]=x; kq+=v[i].c; } } cout<<kq; }
#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...