| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1337164 | boyliguanhan | Sirni (COCI17_sirni) | C++17 | 5112 ms | 447332 KiB |
#include<bits/stdc++.h>
using namespace std;
int id[10001000];
int par[100100];
int abp(int x){
return par[x]?par[x]=abp(par[x]):x;
}
int merge(int u,int v){
u=abp(u);
v=abp(v);
return u==v?0:par[u]=v;
}
vector<pair<int,int>> edges[5000100];
signed main(){
cin.tie(0)->sync_with_stdio(0);
int n,x,CC=0;
cin>>n;
set<int>st;
while(n--)cin>>x,st.insert(x);
for(auto i:st)id[i]=++CC;
for(auto i:st) {
int I=id[i];
auto x = ++st.find(i);
while(x!=st.end()) {
edges[*x%i].push_back({id[*x],I});
int z = *x/i;
x++;
if(x==st.end())break;
if(*x <(z+1)*i)
x=st.lower_bound((z+1)*i);
}
}
long long cost=0;
for(int i=0;i<5e6;i++)
for(auto[u,v]:edges[i])
if(merge(u,v))
cost+=i;
cout<<cost;
}| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
