(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #1106883

#TimeUsernameProblemLanguageResultExecution timeMemory
1106883vjudge1Sirni (COCI17_sirni)C++14
140 / 140
1000 ms773320 KiB
#include <bits/stdc++.h> #define ii pair<int, int> #define fi first #define se second using namespace std; using ll = long long; const int nx=1e5+5; const int N=1e7+5; int n, a[N], last[N], par[N]; ll ans=0; vector<int> rar; vector<ii> ed[N]; int find(int u) { if(!par[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; par[v]=u; return 1; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i = 1; i <= n; i++) cin>>a[i], rar.emplace_back(a[i]); sort(rar.begin(), rar.end()); rar.erase(unique(rar.begin(), rar.end()), rar.end()); n=rar.size(); for(int i = 1; i <= n; i++) { a[i]=rar[i-1]; last[a[i]]=i; } for(int i = N-2; i >= 1; i--) { if(last[i]) continue; if(last[i+1]) last[i]=last[i+1]; } for(int i = 1; i <= n; i++) { if(last[a[i]+1]) ed[a[last[a[i]+1]]%a[i]].emplace_back(i, last[a[i]+1]); for(int j = 2*a[i]; j <= a[n]; j+=a[i]) if(last[j]) ed[a[last[j]]%a[i]].emplace_back(i, last[j]); } for(int i = 0; i < N; i++) for(auto it:ed[i]) if(join(it.fi, it.se)) ans+=i; 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...