#include <bits/stdc++.h>
#include "plants.h"
// #include "grader.cpp"
using namespace std;
const int N = 305;
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] and reach[y][x]) return 0;
    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... |