제출 #316172

#제출 시각아이디문제언어결과실행 시간메모리
316172qpwoeirut곤돌라 (IOI14_gondola)C++17
25 / 100
401 ms1400 KiB
#include <bits/stdc++.h> #include "gondola.h" using namespace std; const int MN = 250001; bool normalize(int n, int seq[]) { for (int i=0; i<n; ++i) { if (seq[i] <= n) { int val = seq[i]; int idx = (n + i - val + 1) % n; rotate(seq, seq+idx, seq+n); return true; } } return false; } bool seen[MN]; int valid(int n, int inputSeq[]) { fill(seen, seen+n, false); normalize(n, inputSeq); for (int i=0; i<n; ++i) { cerr << inputSeq[i] << ' '; } cerr << endl; for (int i=0; i<n; ++i) { if (inputSeq[i] != i+1 && inputSeq[i] <= n) { return 0; } if (seen[inputSeq[i]]) { return 0; } seen[inputSeq[i]] = true; } return 1; } //---------------------- int pos[MN]; int replacement(int n, int gondolaSeq[], int replacementSeq[]) { fill(seen, seen+n, false); normalize(n, gondolaSeq); int mxv = 0; int mxi = -1; for (int i=0; i<n; ++i) { pos[gondolaSeq[i]] = i; seen[gondolaSeq[i]] = true; if (mxv < gondolaSeq[i]) { mxv = gondolaSeq[i]; mxi = i; } } int cur = mxi + 1; int idx = 0; for (int i=n+1; i<=mxv; ++i) { if (!seen[i]) { replacementSeq[idx++] = cur; cur = i; } else { replacementSeq[idx++] = pos[i] + 1; } } return idx; } //---------------------- 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...