제출 #1025359

#제출 시각아이디문제언어결과실행 시간메모리
1025359HappyCapybara곤돌라 (IOI14_gondola)C++17
100 / 100
40 ms6784 KiB
#include "gondola.h" #include<bits/stdc++.h> using namespace std; int valid(int n, int inputSeq[]){ int x = -1; unordered_set<int> s; for (int i=0; i<n; i++){ if (s.find(inputSeq[i]) != s.end()) return 0; s.insert(inputSeq[i]); if (inputSeq[i] <= n){ if (x != -1 && x != inputSeq[i]) return 0; if (x == -1) x = inputSeq[i]; } if (x != -1) x = (x % n) + 1; } return 1; } int replacement(int n, int gondolaSeq[], int replacementSeq[]){ vector<int> v(n); int x = -1; for (int i=0; i<2*n; i++){ if (x != -1){ v[x] = gondolaSeq[i%n]; x = (x+1) % n; } else { if (i == n){ v[0] = gondolaSeq[i%n]; x = 1; } else if (gondolaSeq[i] <= n) x = gondolaSeq[i] % n; } } vector<pair<int,int>> w(n); for (int i=0; i<n; i++) w[i] = {v[i], i+1}; sort(w.begin(), w.end()); int cur = 0, last = n; for (int i=0; i<n; i++){ if (w[i].first == w[i].second) continue; else { replacementSeq[cur] = w[i].second; cur++; last++; while (last != w[i].first){ replacementSeq[cur] = last; cur++; last++; } } } return cur; } unordered_map<long long, long long> m; long long pwr(int b, int x){ if (x == 0) return 1; if (x == 1) return b; if (m[b+x*200000] != 0) return m[b+x*200000]; return m[b+x*200000] = (pwr(b, x/2)*pwr(b, x-x/2)) % 1000000009; } int countReplacement(int n, int inputSeq[]){ if (!valid(n, inputSeq)) return 0; int x = 0; priority_queue<int> pq; for (int i=0; i<n; i++){ if (inputSeq[i] > n){ pq.push(-inputSeq[i]); x++; } } long long res = 1; if (x == n) res = n; int cur = n+1; while (!pq.empty()){ res = (res*pwr(x, -pq.top()-cur)) % 1000000009; cur = -pq.top()+1; pq.pop(); x--; } return res; }
#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...