Submission #1071654

#TimeUsernameProblemLanguageResultExecution timeMemory
1071654IgnutComparing Plants (IOI20_plants)C++17
5 / 100
52 ms7496 KiB
// Ignut

#include <bits/stdc++.h>

using namespace std;
using ll = long long;

int n, k;

vector<int> r;
vector<int> cntInRow;

void init(int K, vector<int> R) {
    n = R.size();
    k = K;
    r = R;
    for (int val : R) r.push_back(val);
    cntInRow.resize(2 * n);
    cntInRow[2 * n - 1] = 1;
    for (int i = 2 * n - 2; i >= 0; i --)
        cntInRow[i] = (r[i] == r[i + 1] ? cntInRow[i + 1] + 1 : 1);
}

int compare_plants(int x, int y) {
    if (k == 2) {
        if (x + cntInRow[x] >= y)
            return r[x] == 1 ? -1 : 1;
        if (y + cntInRow[y] - n >= x)
            return r[y] == 1 ? 1 : -1;
        return 0;
    }
    if (x + k - 1 >= y) {
        if (r[y] - r[x] >= y - x) return 1;
        if (r[x] - r[y] >= y - x) return -1;
    }
    if (y + k - 1 - n >= x) {
        if (r[x] - r[y] >= x + n - y) return -1;
        if (r[y] - r[x] >= x + n - y) 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...