# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
834008 | finn__ | Comparing Plants (IOI20_plants) | C++17 | 4058 ms | 4984 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "plants.h"
using namespace std;
constexpr size_t N = 200000;
size_t n;
int subtask, s[N], h[N];
void init(int k, std::vector<int> r)
{
n = r.size();
if (k == 2)
subtask = 1;
else
subtask = 2;
if (subtask == 1)
{
partial_sum(r.begin(), r.end(), s);
}
else
{
for (size_t i = 0; i < n - 1; ++i)
{
int conseq_nonzero = 0, next_max = 0;
for (size_t j = 0; j < 2 * n;)
{
while (j < 2 * n && (!r[j % n] || r[j % n] < 0))
++j;
size_t k = j;
while (k < 2 * n && r[k % n])
++k;
if (k - j > conseq_nonzero)
conseq_nonzero = k - j, next_max = k % n;
j = k;
}
h[next_max] = n - i;
r[next_max] = -1;
for (int j = next_max - k + 1; j < next_max; ++j)
r[(j + (int)n) % n]--;
}
}
}
int compare_plants(int x, int y)
{
if (subtask == 1)
{
int z = s[y - 1] - (x ? s[x - 1] : 0);
return !z ? 1 : (z == y - x ? -1 : (!(s[n - 1] - z) ? -1 : ((s[n - 1] - z == n - (y - x) ? 1 : 0))));
}
else
{
return h[x] > h[y] ? 1 : -1;
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |