Submission #1225102

#TimeUsernameProblemLanguageResultExecution timeMemory
1225102NonozeComparing Plants (IOI20_plants)C++20
5 / 100
57 ms5704 KiB
#include "plants.h"
#include <bits/stdc++.h>
#define fi first
#define se secod
#define sz(x) (int)x.size()
#define cmin(a, b) a=min(a, b)
#define cmax(a, b) a=max(a, b)
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define pb push_back

using namespace std;


int n, k;
vector<int> smaller, bigger;

void init(int K, vector<int> r) {
	k=K, n=sz(r);
	smaller.resize(n, 0), bigger.resize(n, 0);
	for (int i=n-1; i<n && r[i]; i=(i+1)%n) smaller[n-1]++;
	for (int i=n-1; i<n && !r[i]; i=(i+1)%n) bigger[n-1]++;
	for (int i=n-2; i>=0; i--) {
		if (r[i]) smaller[i]=smaller[i+1]+1;
		else bigger[i]=bigger[i+1]+1;
	}
	return;
}

int taller(int x, int y) {
	int nb=(y-x+n)%n;
	if (bigger[x]>=nb) return 1;
	swap(x, y);
	nb=(y-x+n)%n;
	if (smaller[x]>=nb) return 1;
	return 0;
}

int compare_plants(int x, int y) {
	if (taller(x, y)) return 1;
	if (taller(y, x)) 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...