| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1301296 | orgiloogii | Gondola (IOI14_gondola) | C++20 | 0 ms | 0 KiB |
#include "gondola.h"
#include <bits/stdc++.h>
using namespace std;
int valid(int n, int g[]) {
int idx = -1;
map <int, bool> vis;
for (int i = 0;i < n;i++) {
if (vis[g[i]] == true) return 0;
vis[g[i]] = true;
if (g[i] <= n && idx == -1) {
idx = i;
}
}
if (idx == -1) return 1;
int cnt = g[idx];
for (int i = idx + 1;;i++) {
i %= n;
if (i == idx) break;
cnt %= n;
cnt++;
if (g[i] <= n && g[i] != cnt) return 0;
}
return 1;
}
//----------------------
int replacement(int n, int g[], int r[]) {
int idx = -1;
map <int, bool> vis;
int mx = 0;
for (int i = 0;i < n;i++) {
if (vis[g[i]] == true) return 0;
vis[g[i]] = true;
if (g[i] <= n && idx == -1) {
idx = i;
}
mx = max(mx, g[i]);
}
int sz = 0;
int exp[n] = {0};
exp[idx] = g[idx];
int cnt = g[idx];
for (int i = idx + 1;;i++) {
i %= n;
if (i == idx) break;
cnt %= n;
cnt++;
exp[i] = cnt;
}
if (idx == -1) {
sz = n;
for (int i = 0;i < n;i++) {
r[i] = i + 1;
}
}
else {
vector <pair <int, int>> v;
for (int i = 0;i < n;i++) {
if (g[i] != exp[i]) {
v.push_back({g[i], exp[i]});
}
}
sort(v.begin(), v.end());
for (int i = 0;i < v.size();i++) {
r[sz] = v[second].first;
sz++;
}
}
for (int i = n + 1;i <= mx;i++) {
if (vis[i] == false) {
r[sz] = i;
sz++;
}
}
return mx - n;
}
int countReplacement(int n, int g[]) {
return -3;
}
//int main() {
// int arr[5] = {6, 2, 7, 8, 9};
// int brr[10] = {};
// cout << replacement(5, arr, arr) << endl;
//}
