Submission #303421

#TimeUsernameProblemLanguageResultExecution timeMemory
303421myungwooComparing Plants (IOI20_plants)C++17
14 / 100
4073 ms5752 KiB
#include <bits/stdc++.h>
#include "plants.h"
using namespace std;

#define MAXN 200005

int N, K, R[MAXN];
int A[MAXN];

void init(int K, vector<int> r)
{
	::K = K;
	assert(K+K > N && N <= 5000);
	N = r.size();
	for (int i=1;i<=N;i++) R[i] = r[i-1];
	for (int h=N;h;h--){
		auto find_highest = [&](){
			int cnt = 0;
			for (int i=1;i<=N+N;i++){
				int x = i > N ? i-N : i;
				if (R[x] == 0){
					if (cnt >= K-1) return x;
					cnt = 0;
				}
				else cnt++;
			}
			return 0;
		};
		int x = find_highest();
		assert(x != 0);
		A[x] = h; R[x] = -1;
		for (int i=1;i<K;i++){
			int t = x-i < 1 ? x-i+N : x-i;
			if (R[t] != -1) R[t]--;
		}
	}
}

int compare_plants(int x, int y)
{
	x++; y++;
	if (A[x] > A[y]) return 1;
	if (A[x] < A[y]) return -1;
	return 0; // can't reach here
}
#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...