Submission #129428

#TimeUsernameProblemLanguageResultExecution timeMemory
129428antimirageGondola (IOI14_gondola)C++14
0 / 100
5 ms4216 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; const int N = 1e6 + 5; int b[N], ind[N], mx, sz; int valid(int n, int a[]) { int pos = -1; for (int i = 0; i < n; i++) { if (a[i] <= n) { pos = i; } if (a[i] > a[mx]) { mx = i; } } if (pos == -1) { return 1; } else { int cn = 1; b[pos] = a[pos]; for (int i = (pos + 1) % n; i != pos; i = (i + 1) % n) { if (a[i] > n) continue; if (a[pos] + cn > n && a[i] != a[pos] + cn - n) { return 0; } else if (a[i] != a[pos] + cn) return 0; cn++; } } return 1; } int replacement(int n, int a[], int ans[]) { memset(ind, -1, sizeof(ind)); int pos = -1; for (int i = 0; i < n; i++) { if (a[i] <= n) { pos = i; } if (a[i] > a[mx]) { mx = i; } ind[a[i]] = i; } if (pos == -1) { for (int i = 0; i < n; i++) { b[i] = i + 1; } } else { int cn = 1; b[pos] = a[pos]; for (int i = (pos + 1) % n; i != pos; i = (i + 1) % n) { b[i] = a[pos] + cn; cn++; } } for (int i = n + 1; i <= a[mx]; i++) { if (ind[i] == -1) { ans[sz++] = b[mx]; b[mx] = i; } else { ans[sz++] = b[ind[i]]; b[ind[i]] = i; } } return sz; } //---------------------- int countReplacement(int n, int inputSeq[]) { return -3; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...