Submission #285670

#TimeUsernameProblemLanguageResultExecution timeMemory
285670SaboonGondola (IOI14_gondola)C++14
90 / 100
25 ms2296 KiB
#include "gondola.h" #include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 10; const int mod = 1e9+9; bool mark[250000 + 10]; int valid(int n, int inputSeq[]){ for (int i = 0; i < n; i++){ if (mark[inputSeq[i]]) return false; mark[inputSeq[i]] = 1; } int idx = min_element(inputSeq, inputSeq+n) - inputSeq; if (inputSeq[idx] > n) return true; int cnt = 0; for (int i = idx; i < n; i++){ if (inputSeq[i] <= n and inputSeq[idx]+cnt != inputSeq[i]) return false; cnt ++; } for (int i = 0; i < idx; i++){ if (inputSeq[i] <= n and inputSeq[idx]+cnt != inputSeq[i]) return false; cnt ++; } return true; } int p[maxn]; int replacement(int n, int gondolaSeq[], int replacementSeq[]){ for (int i = 0; i < n; i++) p[i] = i+1; for (int i = 0; i < n; i++){ if (gondolaSeq[i] > n) continue; int cnt = 0; for (int j = i; j < n; j++) p[j] = (gondolaSeq[i]+cnt-1)%n+1, cnt++; for (int j = 0; j < i; j++) p[j] = (gondolaSeq[i]+cnt-1)%n+1, cnt++; break; } vector<pair<int,int>> A; for (int i = 0; i < n; i++) A.push_back({gondolaSeq[i],i}); sort(A.begin(),A.end()); int l = 0, now = n+1; for (auto it : A){ int i = it.second; if (gondolaSeq[i] <= n) continue; while (now <= gondolaSeq[i]) replacementSeq[l++] = p[i], p[i] = now++; } return l; } int countReplacement(int n, int inputSeq[]){ if (!valid(n, inputSeq)) return 0; int Z = 1; if (*min_element(inputSeq,inputSeq+n) > n) Z = n; vector<pair<int,int>> A; for (int i = 0; i < n; i++) if (inputSeq[i] > n) A.push_back({inputSeq[i],i}); sort(A.begin(),A.end()); int ptr = 0, m = A.size(); int mx = *max_element(inputSeq,inputSeq+n); for (int now = n+1; now <= mx; now++){ if (A[ptr].first == now){ ptr ++, m --; continue; } Z = 1LL*Z*m%mod; } return Z; }
#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...