Submission #212653

#TimeUsernameProblemLanguageResultExecution timeMemory
212653mohamedsobhi777Gondola (IOI14_gondola)C++14
25 / 100
17 ms1920 KiB
#include <bits/stdc++.h> #include "gondola.h" using namespace std ; const int N = 3e5 + 7 ; int valid(int n, int inputSeq[]){ vector<int> vis(N , 0) ; int cur = inputSeq[0] -1 ; for(int i = 0 ; i < n; i++){ if(vis[inputSeq[i]]++)return 0 ; if(--inputSeq[i]!=cur) return 0 ; cur = (cur+1) %n ; } return 1 ; } int ab[N] ; int replacement(int n, int gondolaSeq[], int replacementSeq[]) { int proto[N] ; for(int i = 0 ; i <n; i++)proto[i] = i+1 ; for(int i = 0 ; i <n; i++){ if(gondolaSeq[i] <=n){ int k = gondolaSeq[i] +1; proto[i] = gondolaSeq[i] ; if(k==n+1)k=1 ; for(int j = 1 ; j < n ;j++){ int loc = (i+j)%n; proto[loc] = k++ ; if(k==n+1)k = 1 ; } break; } } int bad = 0 ; priority_queue<pair<int , int > > q ; int mx = 0 ; for(int i = 0 ; i< n;i ++){ q.push({gondolaSeq[i] , i}) ; ab[gondolaSeq[i]] = -1 ; mx = max(mx , gondolaSeq[i]) ; bad+=(gondolaSeq[i]>n) ; } int cabs = mx ; int cur = 0 ; while(q.size()){ int tp = q.top().first; int ix = q.top().second ; int hope = proto[ix] ; if(tp==n)break; while(ab[cabs]==-1){ cabs--; } if(bad>1){ replacementSeq[cur++] = hope ; q.pop(); q.push({hope , ix}) ; } else { replacementSeq[cur++] = cabs ; q.pop() ; q.push({cabs , ix}) ; } cabs-- ; } reverse(replacementSeq , replacementSeq + cur) ; return cur ; } 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...