Submission #388195

#TimeUsernameProblemLanguageResultExecution timeMemory
388195alexxela12345Comparing Plants (IOI20_plants)C++17
5 / 100
4089 ms8764 KiB
#include <bits/stdc++.h> #include "plants.h" using namespace std; int n; int k; vector<int> r; vector<int> prefr; void init(int k_, std::vector<int> r_) { k = k_; r = r_; n = r.size(); prefr.resize(n + 1); for (int i = 1; i <= n; i++) { prefr[i] = prefr[i - 1] + r[i - 1]; } } int get_sum(int l, int r) { if (l <= r) { return prefr[r] - prefr[l]; } return prefr[n] - prefr[l] + prefr[r]; } int compare_plants(int x, int y) { if (k == 2) { int a = get_sum(x, y); int b = get_sum(y, x); int A = y - x; if (A < 0) A += n; int B = n - A; if (a == 0) { return 1; } else if (a == A) { return -1; } if (b == 0) { return -1; } else if (b == B) { return 1; } return 0; } bool gr, le; gr = le = false; vector<int> arr(n); iota(arr.begin(), arr.end(), 0); do { vector<int> r2(n); for (int i = 0; i < n; i++) { for (int j = 1; j < k; j++) { if (arr[i] < arr[(i + j) % n]) { r2[i]++; } } } if (r2 == r) { if (arr[x] < arr[y]) le = 1; else gr = 1; } } while (next_permutation(arr.begin(), arr.end())); if (!le) return 1; if (!gr) 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...