Submission #1291704

#TimeUsernameProblemLanguageResultExecution timeMemory
1291704SofiatpcComparing Plants (IOI20_plants)C++20
0 / 100
1 ms576 KiB
#include "plants.h"
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 2*1e5+5;
int d[MAXN], e[MAXN], marcd[MAXN], dd[MAXN], marce[MAXN], de[MAXN];

void init(int k, vector<int> r) {
	int n = r.size();
	for(int i = 0; i < n; i++){
		if(r[i] == 0)e[ (i+1)%n ] = 1;
		else d[i] = 1;
	}

	for(int i = 0; i < n; i++){
		if(marcd[i] == 0 && d[i]){
			int cur = i;
			while(d[cur]){
				marcd[cur] = i;
				dd[ (cur+1)%n ] = dd[cur]+1;
				cur = (cur+1)%n;
			}
			marcd[cur] = i;
		}
		if(marce[i] == 0 && e[i]){
			int cur = i;
			while(e[cur]){
				marce[cur] = i;
				de[ (cur-1+n)%n ] = de[cur]+1;
				cur = (cur-1+n)%n;
			}
			marce[cur] = i;
		}
	}
	return;
}

int compare_plants(int x, int y) {
	if(marce[x] == marce[y]){
		if(de[x] > de[y])return 1;
		return -1;
	}
	if(marcd[x] == marcd[y]){
		if(dd[x] > dd[y])return 1;
		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...