# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
922865 | allin27x | Gondola (IOI14_gondola) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
//#include "gondola.h"
int valid(int n, int S[]){
set<int> s; for(int i=0; i<n; i++) s.insert(S[i]); if (s.size()<n) return 0;
int ind = -1;
for (int i=0; i<n; i++) if (S[i] <= n) {ind = i; break;}
if (ind == -1) return 1;
int t = S[ind];
for (int i=ind+1; i!=ind; i++, i%=n){
t++; if (t==n+1) t = 1;
if (S[i] <= n && S[i] != t) return 0;
}
return 1;
}
int replacement(int n, int S[], int replacementSeq[]){
int ind = -1;
for (int i=0; i<n; i++) if (S[i] <= n) {ind = i; break;}
if (ind == -1) return 1;
int t = S[ind];
map<int,int> tr; int bg = -1;
for (int i=ind+1; i!=ind; i++, i%=n){
t++; if (t==n+1) t = 1;
if (S[i] > n) {tr[S[i]] = t; bg=max(bg,S[i]);}
}
if (bg==-1) return 0;
int bgm = tr[bg];
for (int i=n+1; i<=bg; i++){
if (tr.count(i)){
replacementSeq[i-(n+1)] = tr[i];
} else {
replacementSeq[i-(n+1)] = bgm;
bgm = i; tr[bg] = i;
}
}
return (bg-(n+1) + 1);
}
int countReplacement(int n, int inputSeq[]){
return 0;
}
// int main(){
// int S[] = {3,1,4};
// int ans[10];
// int k = replacement(3,S,ans);
// for (int i=0; i<k; i++) cout<<ans[i]<<' ';
// }