#include "plants.h"
#include <bits/stdc++.h>
using namespace std;
const int nx=2e5+5;
int N, dpl[nx], dpr[nx];
vector<int> h;
int solvel(int x)
{
	if (dpl[x]!=-1) return dpl[x];
	int prev=(x-1+N)%N;
	if (h[prev]==1) return dpl[x]=solvel(prev);
	return dpl[x]=x;
}
int solver(int x)
{
	if (dpr[x]!=-1) return dpr[x];
	int nxt=(x+1)%N;
	if (h[x]==0) return dpr[x]=solver(nxt);
	return dpr[x]=x;
}
void init(int k, std::vector<int> r) {
	N=r.size();
	h=r;
	for (int i=0; i<N; i++) dpl[i]=dpr[i]=-1;
	for (int i=0; i<N; i++)
	{
		if (dpl[i]==-1) solvel(i);
		if (dpr[i]==-1) solver(i);
		//cout<<i<<' '<<dpl[i]<<' '<<dpr[i]<<'\n';
	}
}
int isgreater(int x, int y)
{
	if (dpl[x]==dpr[x]&&dpl[x]!=x) return 1;
	if (dpl[x]>dpr[x]) 
	{
		if (y>=dpl[x]) return 1;
		if (y<=dpr[x]) return 1;
		return 0;
	}
	return (dpl[x]<=y&&y<=dpr[x]);
}
int compare_plants(int x, int y) {
	if (isgreater(x, y)) return 1;
	if (isgreater(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... |