#include<bits/stdc++.h>
//#include "gondola.h"
using namespace std;
int Can(int n, int b[]) {
sort ( b , b + n);
for (int i = 1; i < n; i ++) if ( b[i]== b[i - 1]) return 0;
return 1;
}
int valid(int n, int a[]) {
int cnt = 0, mn = n + 1, ind = 0;
for (int i = 0; i < n; i ++) {
if ( a[i] <=n) {
cnt ++;
mn = a[i];
ind = i;
}
}
if ( cnt == 0) {
if (!Can(n, a)) return 0;
return 1;
}
int last = a[ind];
for (int j = 0; j < n; j ++) {
if (a[ind] <= n && a[ind] != last) {
return 0;
}
last ++;
if ( last == n + 1) last = 1;
ind = (ind + 1) % n;
}
if (!Can(n, a)) return 0;
return 1;
}
//----------------------
int replacement(int n, int gondola[], int replacementSeq[])
{
int used[250005] = {0};
int cnt = 0, mn = n + 1, ind = 0, ind1= 0, l;
l = 0;
for (int i = 0; i < n; i ++) {
if ( gondola[i] <=n) {
cnt ++;
mn = gondola[i];
ind = i;
}
l = max(l, gondola[i]);
}
l -= n;
if ( cnt == 0) {
if (!Can(n, gondola)) return 0;
return 1;
}
vector < pair <int,int > > v;
int last = gondola[ind];
for (int j = 0; j < n; j ++) {
used[j + 1] = 1;
if (gondola[ind] != last) {
v.push_back({gondola[ind], last});
}
last ++;
if ( last == n + 1) last = 1;
ind = (ind + 1) % n;
}
for ( i = 0; i < v.size(); i ++) {
replacementSeq[ind1] = v[i].second;
ind1 ++;
}
for (int i = 1; i <= (n + l); i ++) {
if (!used[i]) {
replacementSeq[ind1] = i;
ind1 ++;
}
}
return l;
}
Compilation message
gondola.cpp: In function 'int valid(int, int*)':
gondola.cpp:11:15: warning: variable 'mn' set but not used [-Wunused-but-set-variable]
11 | int cnt = 0, mn = n + 1, ind = 0;
| ^~
gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:68:8: error: 'i' was not declared in this scope
68 | for ( i = 0; i < v.size(); i ++) {
| ^