#include "gondola.h"
#include <bits/stdc++.h>
using namespace std;
int valid(int n, int inputSeq[]) {
deque<int> v(n);
for (int i = 0; i < n; i++) v[i] = inputSeq[i];
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 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, so now 1 is at position 0, 2 at 1, etc
set<int> waiting;
vector<int> p(250001, -1);
for (int i = 0; i < n; i++) p[v[i]] = i;
for (int i = 0; i < n; i++) if (v[i] > n) waiting.insert(i);
vector<int> curr(n);
for (int i = 0; i < n; i++) curr[i] = (i + 1);
vector<int> rep;
int mx = *max_element(v.begin(), v.end());
for (int i = (n + 1); i <= mx; i++) {
if (p[i] == -1) {
rep.push_back(curr[*waiting.begin()]);
curr[*waiting.begin()] = i;
continue;
}
rep.push_back(curr[p[i]]);
curr[p[i]] = i;
waiting.erase(i);
}
for (int i = 0; i < ((int) rep.size()); i++) {
replacementSeq[i] = rep[i];
}
return rep.size();
}
//----------------------
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... |