Submission #1156956

#TimeUsernameProblemLanguageResultExecution timeMemory
115695612345678Comparing Plants (IOI20_plants)C++20
0 / 100
0 ms328 KiB
#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)
{
	int prev=(x-1+N)%N;
	if (h[prev]==1) return dpl[x]=solvel(prev);
	return dpl[x]=x;
}

int solver(int 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 compare_plants(int x, int y) {
	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]);
}
#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...