Submission #8893

#TimeUsernameProblemLanguageResultExecution timeMemory
8893ho94949Gondola (IOI14_gondola)C++98
55 / 100
28 ms2964 KiB
#include <algorithm> #include <cstring> #include <vector> #include <cstdio> #include "gondola.h" using namespace std; int valid(int n, int inputSeq[]){ bool x[250010]; memset(x,sizeof(x),0); int firstoffset=-1; for(int i=0;i<n;i++){ if(inputSeq[i]<=n){ if(firstoffset==-1) firstoffset=(inputSeq[i]-i+n)%n; else if(firstoffset!=(inputSeq[i]-i+n)%n) return 0; } if(x[inputSeq[i]]) return 0; x[inputSeq[i]]=true; } return 1; } int replacement(int n, int gondolaSeq[], int replacementSeq[]){ vector<pair<int,int> > X; int firstoffset=0; for(int i=0;i<n;i++){ if(gondolaSeq[i]<=n){ if(firstoffset==0) firstoffset=(gondolaSeq[i]-i+n)%n; } } for(int i=0;i<n;i++){ if(gondolaSeq[i]>n){ X.push_back(make_pair(gondolaSeq[i],i)); } } sort(X.begin(),X.end()); int ptr=0; int top=n+1; for(int i=0;i<X.size();i++){ //printf("%d %d\n",X[i].second,firstoffset); replacementSeq[ptr++]=(X[i].second+firstoffset+n-1)%n+1; for(int j=top;j<X[i].first;j++) replacementSeq[ptr++]=j; top=X[i].first+1; } return ptr; } 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...