#include "plants.h"
#include<bits/stdc++.h>
using namespace std;
#define MAXN 200'007
int prm[MAXN];
vector<int> rr;
int N;
long long segg[4*MAXN],segm[4*MAXN];
void Initialise(int ind, int l, int r)
{
if (l==r)
{
segg[ind]=rr[l];
segm[ind]=rr[l];
return;
}
int mid=(l+r)/2;
Initialise(ind*2,l,mid);
Initialise(ind*2,mid+1,r);
segg[ind]=max(segg[ind*2],segg[ind*2+1]);
segm[ind]=min(segm[ind*2],segm[ind*2+1]);
}
long long qm,qg;
void Query(int ind, int l, int r, int ql, int qr)
{
if (ql<=l && qr>=r)
{
qm=min(qm,segm[ind]);
qg=min(qg,segg[ind]);
return;
}
int mid=(l+r)/2;
if (ql<=mid) Query(ind*2,l,mid,ql,qr);
if (qr>=mid+1) Query(ind*2+1,mid+1,r,ql,qr);
}
void init(int k, vector<int> r) {
int n=r.size();
rr=r;
N=n;
Initialise(1,0,n-1);
//for (int q=0;q<n;q++) cout<<prm[q]<<" ";
return;
}
int compare_plants(int x, int y) {
int obr=1;
if (x>y)
{
swap(x,y);
obr=-1;
}
qm=3;
qg=-1;
Query(1,0,N-1,x,y-1);
if (qm==qg)
{
if (qm==0)
{
///x e poveche ot y
return obr;
}
if (qm==1)
{
///x e pomalko ot y
return -1*obr;
}
}
qm=3;
qg=-1;
Query(1,0,N-1,y,N-1);
if (x!=0) Query(1,0,N-1,0,x-1);
if (qm==qg)
{
if (qm==0)
{
///y e poveche ot x
return -1*obr;
}
if (qm==1)
{
return obr;
}
}
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... |