# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
956272 | Trisanu_Das | Sirni (COCI17_sirni) | C++17 | 1870 ms | 613712 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> ii;
const int MAXN = 1e7 + 1;
int pai[MAXN],proximo[MAXN],N;
vector<int> ordenado;
vector<ii> Kruskal[MAXN];
int find(int x){
if(x == pai[x]) return x;
return pai[x] = find(pai[x]);
}
void join(int x,int y){
x = find(x);y = find(y);
if(x == y) return;
if(rand() & 1) swap(x,y);
pai[y] = x;
}
int main(){
scanf("%d",&N);
for(int i = 1;i<=N;i++){
int x;
scanf("%d",&x);
pai[x] = x;
}
for(int i = 1;i<MAXN;i++){
if(pai[i] == 0) continue;
ordenado.push_back(i);
for(int j = 2*i;j<MAXN;j+=i) if(pai[j] != 0) join(i,j);
}
int ultimo_visto = ordenado.back();
for(int i = MAXN-1;i>=1;i--){
proximo[i] = ultimo_visto;
if(!ordenado.empty() && ordenado.back() == i){
ultimo_visto = i;
ordenado.pop_back();
}
}
for(int i = 1;i<MAXN;i++){
if(pai[i] == 0) continue;
ultimo_visto = -1;
for(int j = i;j<MAXN;j+=i){
int candidato = proximo[j];
if(candidato == ultimo_visto) continue;
ultimo_visto = candidato;
Kruskal[candidato % i].push_back(ii(i,candidato));
}
}
ll total = 0;
for(int w = 0;w<MAXN;w++){
for(ii davez : Kruskal[w]){
int u = davez.first, v = davez.second;
if(find(u) != find(v)){
join(u,v);
total += w;
}
}
}
printf("%lld\n",total);
return 0;
}
Compilation message (stderr)
# | 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... |