#include <bits/stdc++.h>
#include "plants.h"
// #include "grader.cpp"
using namespace std;
const int N = 5005;
int reach[N][N], edge[N][N];
void dfs(int v, int s){
reach[s][v] = 1;
for (int u = 0; u < N; u ++)
if (!reach[s][u] and edge[v][u])
dfs(u, s);
}
void init(int kk, vector<int> r) {
int n = r.size(), k = kk;
for (int i = 0; i < n; i ++){
for (int j = i + 1; j < i + n; j ++){
int x = j - i;
if (r[(j % n)] < r[i] - 2 * x) edge[i][(j % n)] = 1;
if (r[(j % n)] > r[i] + 2 * x) edge[(j % n)][i] = 1;
}
}
for (int i = 0; i < n; i ++){
if (r[i] == 0){
for (int j = i + 1; j < i + k; j ++)
edge[(j % n)][i] = 1;
}
if (r[i] == k - 1){
for (int j = i + 1; j < i + k; j ++)
edge[i][(j % n)] = 1;
}
}
for (int v = 0; v < n; v ++)
dfs(v, v);
return;
}
int compare_plants(int x, int y) {
if (reach[x][y]) return -1;
if (reach[y][x]) return 1;
return 0;
}
# | 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... |