Submission #652108

#TimeUsernameProblemLanguageResultExecution timeMemory
652108mychecksedadComparing Plants (IOI20_plants)C++17
0 / 100
12 ms15972 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e6; struct Dsu { vector<int> s, p; Dsu(int n){ s.resize(n+1, 1); p.resize(n+1); for(int i = 0; i <= n; ++i) p[i] = i; } int find(int v){ if(p[v] == v) return v; return (p[v] = find(p[v])); } void merge(int a, int b){ a = find(a); b = find(b); if(a != b){ if(s[a] > s[b]){ swap(a, b); } s[b] += s[a]; p[a] = b; } } } d(N), d1(N); void init(int k, vector<int> r){ int n = r.size(); for(int i = 0; i < n; ++i){ if(r[i] == 1){ d.merge(i, (i + 1)%n); }else{ d1.merge(i, (i + 1)%n); } } } int compare_plants(int x, int y){ if(d.find(x) == d.find(y)){ return 1; }else if(d1.find(x) == d1.find(y)){ return -1; } 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...