Submission #288337

#TimeUsernameProblemLanguageResultExecution timeMemory
288337Atill83곤돌라 (IOI14_gondola)C++14
25 / 100
18 ms1192 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; const int MAXN = (int)3e5 + 5; int yer[MAXN]; int valid(int n, int inputSeq[]) { for (int i = 1; i <= n; i++) { yer[i] = -1; } vector<int> ot; for (int i = 0; i < n; i++) { if (inputSeq[i] <= n) { if (yer[inputSeq[i]] != -1) return 0; yer[inputSeq[i]] = i; } else { ot.push_back(inputSeq[i]); } } sort(ot.begin(), ot.end()); int bas = n; for (int i : ot) { if (i != bas + 1) { return 0; } else bas++; } int last = 0; int deg = 0; for (int i = 1; i <= n; i++) { if (yer[i] == -1) continue; if (yer[i] < last) { last = yer[i]; if (deg) return 0; deg = 1; } last = yer[i]; } return 1; } //---------------------- int replacement(int n, int gondolaSeq[], int replacementSeq[]) { for (int i = 1; i <= n; i++) { yer[i] = -1; } vector<int> ot; for (int i = 0; i < n; i++) { if (gondolaSeq[i] <= n) { if (yer[gondolaSeq[i]] != -1) return 0; yer[gondolaSeq[i]] = i; } else { ot.push_back(gondolaSeq[i]); } } int curi = 0; if((int)ot.size() == n){ while(curi < n) { //assert(curi + 1 == 0); replacementSeq[curi] = curi + 1; curi++; } return n; }else{ int piv = 0; for(int i = 1; i <= n; i++){ if(yer[i] != -1){ piv = i; break; } } int last = piv; last++; if(last == n + 1) last = 1; int mx = 0; int ono = -1; for(int j = 1; j < n; j++){ int idx = yer[piv] + j; idx %= n; int cur = gondolaSeq[idx]; if(cur > n){ assert(last != 0); if(mx < cur - n){ mx = cur - n; ono = last; } replacementSeq[cur - n - 1] = last; }else{ assert(cur == last); } last++; if(last == n + 1) last = 1; } replacementSeq[mx - 1] = 0; for(int i = 0; i < mx; i++){ if(replacementSeq[i] == 0){ replacementSeq[i] = ono; ono = n + i + 1; } } return mx; } } //---------------------- 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...