Submission #1171563

#TimeUsernameProblemLanguageResultExecution timeMemory
1171563imarnSirni (COCI17_sirni)C++20
112 / 140
5113 ms704752 KiB
#include<bits/stdc++.h> #pragma GCC optimize("O3") #pragma GCC target("avx2") #define ll long long #define pii pair<int,int> #define pll pair<ll,ll> #define plx pair<ll,int> #define f first #define s second #define pb push_back #define all(x) x.begin(),x.end() #define vi vector<int> #define vvi vector<vi> #define pp pair<ll,int> #define ub(x,i) upper_bound(all(x),i)-x.begin() #define lb(x,i) lower_bound(all(x),i)-x.begin() #define t3 tuple<int,int,int> #define sz(x) (ll)x.size() #define cd complex<double> using namespace std; const int mxn=1e7+1,mxl=1e5+1; pii r[mxn]; int pr[mxl],cur=0; pair<int,pii> qr[10*mxn]; int get(int r){ return pr[r]==r?r:pr[r]=get(pr[r]); } int main(){ ios_base::sync_with_stdio(0);cin.tie(0); int n;cin>>n;vector<int>a(n); for(int i=0;i<n;i++)cin>>a[i];sort(all(a));a.erase(unique(all(a)),a.end()); n=a.size();for(int i=0;i<n;i++)r[a[i]]={a[i],i}; for(int i=a[n-1];i>=0;i--)if(!r[i].f)r[i]=r[i+1]; iota(pr,pr+n,0); for(int i=0;i<n-1;i++){ qr[cur++]={a[i+1]%a[i],{i,i+1}}; for(int j=2*a[i];j<mxn;j+=a[i]){ if(r[j].f)qr[cur++]={r[j].f%a[i],{r[j].s,i}}; } }sort(qr,qr+cur);ll ans=0; for(int i=0;i<cur;i++){ if(get(qr[i].s.f)==get(qr[i].s.s))continue; pr[get(qr[i].s.f)]=get(qr[i].s.s); ans+=qr[i].f; }cout<<ans; }
#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...