Submission #867767

#TimeUsernameProblemLanguageResultExecution timeMemory
867767noyancanturkSirni (COCI17_sirni)C++17
140 / 140
2512 ms476876 KiB
#ifndef Local #pragma GCC optimize("O3,unroll-loops") #endif #include <bits/stdc++.h> //#define int long long #define pb push_back using namespace std; const int lim=1e7+1; int mod=998244353; using pii=pair<int,int>; int parent[lim]; int find(int i){ if(parent[i]==i)return i; return parent[i]=find(parent[i]); } bool unite(int i,int j){ int x=find(i),y=find(j); parent[x]=y; return x^y; } struct edge{ int cost,x,y; }; int past[lim]; void solve(){ int n; cin>>n; int a[n]; vector<bool>check(lim); for(int i=0;i<n;i++){ cin>>a[i]; parent[a[i]]=a[i]; check[a[i]]=1; } if(check[1]){ cout<<"0\n"; return; } sort(a,a+n); past[a[n-1]]=a[n-1]; for(int j=a[n-1]-1;j;j--){ past[j]=past[j+1]; if(check[j])past[j]=j; } vector<edge>v; for(int i=0;i<n-1;i++){ if(a[i]==a[i+1])continue; v.pb({a[i+1]%a[i],a[i],a[i+1]}); for(int j=2*a[i];j<=a[n-1];j+=a[i]){ if(past[j]!=past[j-a[i]])v.pb({past[j]%a[i],a[i],past[j]}); } } sort(v.begin(),v.end(),[](edge&e1,edge&e2)-> bool { return e1.cost<e2.cost; }); int ans=0; for(edge&e:v){ if(unite(e.x,e.y)){ ans+=e.cost; } } cout<<ans<<"\n"; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); #ifdef Local freopen(".in","r",stdin); freopen(".out","w",stdout); #else #endif int t=1; //cin>>t; while (t--) { solve(); } }
#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...