#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; // index of gondola 1
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)}); // current, original gondola
int repi = 0; // repSeq idx
int pr = n; // previous cur
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 inputSeq[])
{
return -3;
}
# | 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... |