Submission #247408

#TimeUsernameProblemLanguageResultExecution timeMemory
247408Artyom123곤돌라 (IOI14_gondola)C++14
65 / 100
73 ms6392 KiB
#include <bits/stdc++.h> #include <gondola.h> using namespace std; #define fi first #define se second #define all(x) (x).begin(), (x).end() #define pb emplace_back #define ll long long #define ld long double const int INF = 2e9 + 1; const ll INFLL = 1e18 + 1; const int mod = 1e9 + 9; int valid(int n, int inputSeq[]) { vector<int> a(n); set<int> lol; for (int i = 0; i < n; i++) { a[i] = inputSeq[i]; lol.insert(a[i]); } if ((int)lol.size() != n) return 0; int ind = -1; for (int i = 0; i < n; i++) { if (a[i] <= n) ind = i; } if (ind == -1) return 1; int now = a[ind]; for (int i = 0; i < n; i++) { if (a[ind] <= n && a[ind] != now) return 0; ind++; if (ind >= n) ind -= n; now++; if (now > n) now = 1; } return 1; } int replacement(int n, int gondolaSeq[], int replacementSeq[]) { return 0; } ll my_pow(ll n, ll m) { if (m == 0) return 1; ll now = my_pow(n, m / 2); if (m % 2 == 0) return (now * now) % mod; return (((now * now) % mod) * n) % mod; } int countReplacement(int n, int inputSeq[]) { if (!valid(n, inputSeq)) return 0; vector<int> a(n); bool f = false, is_fixed = false; vector<int> lol; ll cnt = n; for (int i = 0; i < n; i++) { a[i] = inputSeq[i]; if (a[i] > n) { f = true; lol.pb(a[i]); } if (a[i] <= n) { is_fixed = true; cnt--; } } if (!f) return 1; sort(all(lol)); ll last = n; ll ans = 1; for (int i = 0; i < (int)lol.size(); i++) { ans *= my_pow(cnt, lol[i] - last - 1); ans %= mod; last = lol[i]; cnt--; } if (!is_fixed) { ans *= n; ans %= mod; } return ans; } /* int main() { int n; cin >> n; int a[n]; for (int i = 0; i < n; i++) cin >> a[i]; cout << countReplacement(n, a); return 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...