Submission #1152053

#TimeUsernameProblemLanguageResultExecution timeMemory
1152053alexddGondola (IOI14_gondola)C++20
20 / 100
32 ms4680 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; int valid(int n, int inputSeq[]) { map<int,int> idk; for(int i=0;i<n;i++) { if(idk[inputSeq[i]]) return 0; idk[inputSeq[i]]++; } for(int i=0;i<n;i++) { if(inputSeq[i] <= n) { for(int j=0;j<n;j++) { if(inputSeq[(i+j)%n]<=n && inputSeq[(i+j)%n] != (inputSeq[i]-1 + j)%n + 1) return 0; } return 1; } } return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { for(int i=0;i<n;i++) gondolaSeq[i]--; vector<int> init(n),init_poz(n),final_poz(250000,-1); int maxv=-1; for(int i=0;i<n;i++) { final_poz[gondolaSeq[i]]=i; maxv = max(maxv, gondolaSeq[i]); } for(int i=0;i<n;i++) { if(gondolaSeq[i]<n || i==n-1) { for(int j=0;j<n;j++) init[(i+j)%n] = (gondolaSeq[i]+j)%n; for(int j=0;j<n;j++) init_poz[init[j]]=j; int lun=0; for(int j=n;j<=maxv;j++) { if(final_poz[j]==-1) { bool gasit=0; for(int u=0;u<n;u++) { if(final_poz[init[u]] == -1) { replacementSeq[lun++] = init[u]; init[u] = j; init_poz[j] = u; init_poz[replacementSeq[lun-1]] = -1; gasit=1; break; } } assert(gasit); } else { replacementSeq[lun++] = init[final_poz[j]]; init[final_poz[j]] = j; init_poz[j] = final_poz[j]; init_poz[replacementSeq[lun-1]] = -1; } } for(int i=0;i<lun;i++) replacementSeq[i]++; return lun; } } assert(0); } //---------------------- int countReplacement(int n, int inputSeq[]) { if(!valid(n,inputSeq)) return 0; 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...