# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1148154 | josephtenorio | Gondola (IOI14_gondola) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
pair<int, int> primero(vector<int> &seq) {
pair<int, int> ini = {INT_MAX, 0};
for (int t1 = 0; t1 < seq.size(); t1 ++) {
ini = min(ini, {seq[t1], t1});
}
return ini;
}
int valid(int n, vector<int> seq) {
pair<int, int> in = primero(seq);
if (in.first <= n) {
int index = in.second;
int debe = in.first;
for (int t1 = 0; t1 < n; t1 ++) {
if (1 <= seq[index] && seq[index] <= n) {
if (seq[index] != debe) return 0;
index ++;
index %= n;
debe ++;
if (debe == n + 1) {
debe = 1;
}
} else {
index ++;
index %= n;
debe ++;
if (debe == n + 1) {
debe = 1;
}
}
}
return 1;
} else {
return 1;
}
}
void cam(vector<int> &seq, vector<pair<int, int>> &camb) {
int n = seq.size();
pair<int, int> ini = primero(seq);
int index = ini.second;
int debe = ini.first;
if (debe > n) {
debe = 1;
}
for (int t1 = 0; t1 < seq.size(); t1 ++) {
if (seq[index] != debe) {
camb.push_back({seq[index], debe});
}
index ++;
index %= n;
debe ++;
if (debe == seq.size() + 1) {
debe = 1;
}
}
}
void replacement(int n, vector<int> seq, vector<int> &re) {
vector<pair<int, int>> camb;
cam(seq, camb);
sort(camb.begin(), camb.end());
int sig = n + 1;
for (auto pa: camb) {
re.push_back(pa.second);
for (int t1 = sig; t1 < pa.first; t1 ++) {
re.push_back(t1);
sig ++;
}
}
return ;
}
long long countReplacement(int n, vector<int> seq) {
return 0;
}