#include "gondola.h"
#include <bits/stdc++.h>
using namespace std;
int isValid(int n, deque<int> v) {
set<int> s;
for (auto u : v) s.insert(u);
if (((int) s.size()) < n) return 0;
int x = *min_element(v.begin(), v.end());
if (x > n) return 1;
while (v.front() != x) {
v.push_front(v.back());
v.pop_back();
}
int curr = x;
for (int i = 1; i < n; i++) {
if (v[i] > n) continue;
if (v[i] != (x + i)) return 0;
}
return 1;
}
int valid(int n, int inputSeq[]) {
deque<int> v(n);
for (int i = 0; i < n; i++) v[i] = inputSeq[i];
return isValid(n, v);
}
//----------------------
#define pii pair<int, int>
#define fr first
#define se second
int replacement(int n, int gondolaSeq[], int replacementSeq[]) {
deque<int> v(n);
for (int i = 0; i < n; i++) v[i] = gondolaSeq[i];
int po = (min_element(v.begin(), v.end()) - v.begin());
int x = v[po];
if (x <= n) {
int qtd = (x - po - 1)%n;
qtd = ((qtd + n)%n);
while (qtd--) {
v.push_front(v.back());
v.pop_back();
}
}
// ok now calc
vector<pii> ord;
for (int i = 0; i < n; i++) {
if (v[i] > n) ord.push_back({v[i], i});
}
sort(ord.begin(), ord.end());
vector<int> rep;
int curr = n;
for (auto u : ord) {
int a = (u.se + 1);
while (curr != u.fr) {
rep.push_back(a);
curr++;
a = curr;
}
}
for (int i = 0; i < ((int) rep.size()); i++) replacementSeq[i] = rep[i];
return rep.size();
}
//----------------------
#define int long long
const int MOD = (1e9 + 9);
int mult(int a, int b) {
return (((a % MOD) * (b % MOD)) % MOD);
}
int binpow(int a, int b) {
if (b == 0) return 1;
int c = binpow(a, b/2);
c = mult(c, c);
if (b % 2) return mult(a, c);
else return c;
}
int32_t countReplacement(int32_t n, int32_t inputSeq[]) {
deque<int32_t> v(n);
for (int i = 0; i < n; i++) v[i] = inputSeq[i];
if (!isValid(n, v)) return 0;
int waiting = 0;
// ok now calc
vector<int> over;
for (int i = 0; i < n; i++) if (v[i] > n) {
waiting++;
over.push_back(v[i]);
}
sort(over.begin(), over.end());
int ans = 1;
if (waiting == n) ans = n;
int curr = n;
for (auto u : over) {
ans = mult(ans, binpow(waiting, u - curr - 1));
waiting--;
curr = u;
}
return ans;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |