Submission #782325

#TimeUsernameProblemLanguageResultExecution timeMemory
782325sofija6Gondola (IOI14_gondola)C++14
55 / 100
33 ms4564 KiB
#include <bits/stdc++.h> #include "gondola.h" #define MAXN 250010 using namespace std; int valid(int n, int inputSeq[]) { int pos=-1,cnt=n,cur; set<int> s; for (int i=0;i<n;i++) { if (s.count(inputSeq[i])) return 0; s.insert(inputSeq[i]); if (inputSeq[i]<=n) pos=i; } if (pos==-1) return 1; cur=inputSeq[pos]; while (cnt--) { if (inputSeq[pos]<=n && inputSeq[pos]!=cur) return 0; cur++; pos++; if (pos>=n) pos=0; if (cur>n) cur=1; } return 1; } int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int maxx=n,fixed[MAXN]={0},pos=0,realval[MAXN],s=-1; for (int i=1;i<=n;i++) realval[i]=i; for (int i=0;i<n;i++) { if (gondolaSeq[i]>n) fixed[gondolaSeq[i]]=i+1; else s=i+1; if (gondolaSeq[i]>maxx) { maxx=max(maxx,gondolaSeq[i]); pos=i+1; } } if (s!=-1) { int cur=gondolaSeq[s-1],cnt=n; while (cnt--) { realval[s]=cur; s++; cur++; if (s>n) s=1; if (cur>n) cur=1; } } int lastt=realval[pos]; for (int i=n+1;i<=maxx;i++) { if (fixed[i]) replacementSeq[i-n-1]=fixed[i]==pos?lastt : realval[fixed[i]]; else { replacementSeq[i-n-1]=lastt; lastt=i; } } return maxx-n; } 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...