#include "gondola.h"
#include <bits/stdc++.h>
using namespace std;
int valid(int n, int inputSeq[]) {
int st=0, mn=1e9;
vector<int> v;
for(int i=0; i<n; i++) {
v.push_back(inputSeq[i]);
if(inputSeq[i] <= n && inputSeq[i] < mn) {
mn = inputSeq[i];
st = i;
}
}
sort(v.begin(), v.end());
for(int i=1; i<n; i++) {
if(v[i] == v[i-1]) return 0;
}
if(mn == 1e9) return 1;
for(int i=st; i<n; i++) {
if(inputSeq[i] <= n && inputSeq[i] != mn) return 0;
mn++;
}
for(int i=0; i<st; i++) {
if(inputSeq[i] <= n && inputSeq[i] != mn) return 0;
mn++;
}
return 1;
}
//----------------------
int replacement(int n, int gondolaSeq[], int replacementSeq[]) {
int oriSeq[n], pos=1, val=1, idx=0;
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
priority_queue<int> avai;
map<int, int> mp;
for(int i=0; i<n; i++) {
if(gondolaSeq[i] <= n) {
pos = i;
val = gondolaSeq[i];
} else {
pq.push({gondolaSeq[i], i});
avai.push(i);
}
}
for(int i=pos; i<n; i++) {
oriSeq[i] = val;
val++;
if(val > n) val -= n;
}
for(int i=0; i<pos; i++) {
oriSeq[i] = val;
val++;
if(val > n) val -= n;
}
for(int i=n+1; pq.size(); i++) {
if(i == pq.top().first) {
replacementSeq[idx] = oriSeq[pq.top().second];
oriSeq[pq.top().second] = i;
pq.pop();
idx++;
mp[pq.top().second] = 1;
} else {
while(avai.size() && mp[avai.top()]) avai.pop();
if(avai.empty()) return idx;
replacementSeq[idx] = oriSeq[avai.top()];
oriSeq[avai.top()] = i;
idx++;
}
}
return idx;
}
//----------------------
int countReplacement(int n, int inputSeq[]) {
int avai=0;
vector<int> ra;
if(valid(n, inputSeq) == 0) return 0;
long long ans = 1, mod = 1e9+9;
ra.push_back(n);
for(int i=0; i<n; i++) {
if(inputSeq[i] > n) {
ra.push_back(inputSeq[i]);
avai++;
}
}
sort(ra.begin(), ra.end());
for(int i=1; i<ra.size(); i++) {
int rem = ra[i]-ra[i-1]-1;
ans += rem*(ra.size()-i-1);
ans %= mod;
}
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... |