Submission #863476

#TimeUsernameProblemLanguageResultExecution timeMemory
863476blacktulipSirni (COCI17_sirni)C++17
140 / 140
1399 ms654912 KiB
#include <bits/stdc++.h> using namespace std; typedef long long lo; #define fi first #define se second #define endl "\n" #define pb push_back #define fio() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL) #define FOR for(int i=1;i<=n;i++) #define mid ((start+end)/2) #define ort ((bas+son)/2) #define _ << " " << const lo inf = 1000000000; const lo li = 500005; const lo mod = 1000000007; int n,m,a[li],k,flag,t,fa[li],vis[10000005],mx[10000005],ind[10000005]; long long cev; string s; vector<pair<int,int>> v[10000002]; set<pair<int,int>> st; inline int dsu(int x){ if(x==fa[x])return x; return fa[x]=dsu(fa[x]); } int main(void){ fio(); cin>>n; FOR{ fa[i]=i; cin>>a[i]; mx[a[i]]=a[i]; } for(int i=10000000-1;i>=1;i--){ if(!mx[i])mx[i]=mx[i+1]; } sort(a+1,a+n+1); FOR{ if(!ind[a[i]])ind[a[i]]=i; } FOR{ if(a[i]==a[i-1]){ v[0].pb({i-1,i}); continue; } if(mx[a[i]+1] && mx[a[i]*2]!=mx[a[i]+1])v[mx[a[i]+1]-a[i]].pb({i,ind[mx[a[i]+1]]}); for(int j=a[i]*2;j<=10000000;j+=a[i]){ vis[j]=i; if(mx[j] && mx[j]!=mx[j+a[i]])v[mx[j]-j].pb({i,ind[mx[j]]}); } } for(int i=0;i<=10000000;i++){ for(auto go:v[i]){ int x=go.fi; int y=go.se; if(dsu(x)==dsu(y))continue; fa[dsu(x)]=dsu(y); cev+=i; } } cout<<cev<<endl; return 0; }
#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...