Submission #288362

#TimeUsernameProblemLanguageResultExecution timeMemory
288362Atill83Gondola (IOI14_gondola)C++14
55 / 100
23 ms2492 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[]) { int *p = gondolaSeq, * q = 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){ int mx = 0; int last = -1; for(int i = 0; i < n; i++){ int cur = gondolaSeq[i]; if(cur - n > mx){ mx = cur - n; last = i + 1; } q[cur - n - 1] = i + 1; } q[mx - 1] = 0; for(int j = 0; j < mx; j++){ if(q[j] == 0){ q[j] = last; last = n + j + 1; } } return mx; }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; }

Compilation message (stderr)

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:60:10: warning: unused variable 'p' [-Wunused-variable]
   60 |     int *p = gondolaSeq, * q = replacementSeq;
      |          ^
gondola.cpp:79:9: warning: unused variable 'curi' [-Wunused-variable]
   79 |     int curi = 0;
      |         ^~~~
#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...