#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define FOR(i,N) for(ll i = 0; i < N; i++)
#define all(x) (x).begin(), (x).end()
#define F first
#define S second
#include "gondola.h"
int valid(int n, int seq[]) {
unordered_set<int> seen;
pair<int,int> pr = {-1,-1};
FOR(i, n) {
if (seen.find(seq[i]) != seen.end()) return 0;
seen.insert(seq[i]);
if (seq[i] <= n) {
if (pr.F != -1) {
if (pr.F <= seq[i]) {
if (seq[i]-pr.F != i-pr.S) return 0;
} else {
if (pr.F-seq[i] != n-(i-pr.S)) return 0;
}
}
pr = {seq[i], i};
}
}
return 1;
}
int replacement(int n, int gSeq[], int replacementSeq[]) {
int mi = min_element(gSeq, gSeq+n) - gSeq;
int mn = *min_element(gSeq, gSeq+n);
if (mn > n) {mn = 1; mi = 0;}
mi = (mi + n-mn+1) % n; // gondola 1 idx
priority_queue<pair<ll,ll>> pq;
FOR(i, n) if (gSeq[i] > n) pq.push({-gSeq[i], (i >= mi ? i-mi+1 : n-(mi-i)+1)});
int repi = 0;
int pr = n;
while(pq.size()) {
auto [cur, og] = pq.top();
cur = -cur;
pq.pop();
replacementSeq[repi++] = og;
for(int rep = pr+1; rep < cur; rep++) replacementSeq[repi++] = rep;
pr = cur;
}
return repi;
}
int countReplacement(int n, int seq[]) {
if (!valid(n, seq)) return 0;
ll r = 0, res = 1, pr = n+1;
priority_queue<ll> pq;
FOR(i, n) if (seq[i] > n) {pq.push(-seq[i]); r++;}
if (r == n) res = n;
while (pq.size()){
ll cur = -pq.top();
pq.pop();
res = ll(res * (ll (pow(r, cur-pr)) % 1000000009)) % 1000000009;
pr = cur+1;
r--;
}
return res;
}
# | 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... |