Submission #452059

#TimeUsernameProblemLanguageResultExecution timeMemory
452059rainboyComparing Plants (IOI20_plants)C++17
5 / 100
91 ms5716 KiB
#include "plants.h"

using namespace std;

typedef vector<int> vi;

const int N = 200000, INF = 0x3f3f3f3f;

int pp[N], hh[N], n, k;

void init(int k_, vi rr) {
	int h, i;

	n = rr.size(), k = k_;
	if (k == 2) {
		for (i = 0; i < n; i++)
			pp[i] = rr[i];
		for (i = 1; i < n; i++)
			pp[i] += pp[i - 1];
	} else {
		for (h = 0; h < n; h++) {
			int i_ = -1;

			for (i = 0; i < n; i++)
				if (rr[i] == 0) {
					if (i_ != -1 && i - i_ >= k_)
						break;
					i_ = i;
				}
			i = i_;
			hh[i] = h;
			rr[i] = INF;
			for (i_ = 0; i_ < k; i_++)
				rr[(i + i_) % n]--;
		}
	}
}

int compare_plants(int x, int y) {
	int k = pp[y - 1] - (x == 0 ? 0 : pp[x - 1]);

	if (k == y - x)
		return -1;
	else if (k == 0)
		return 1;
	k = pp[n - 1] - k;
	if (k == n - (y - x))
		return 1;
	else if (k == 0)
		return -1;
	return 0;
}
#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...