Submission #744768

#TimeUsernameProblemLanguageResultExecution timeMemory
744768PixelCatGondola (IOI14_gondola)C++14
90 / 100
1083 ms3140 KiB
#include "gondola.h" #ifdef NYAOWO #include "grader.cpp" #endif #include <bits/stdc++.h> #define For(i, a, b) for(int i = a; i <= b; i++) #define Forr(i, a, b) for(int i = a; i >= b; i--) #define F first #define S second #define eb emplace_back #define all(x) x.begin(), x.end() #define sz(x) ((int)x.size()) #define int LL using namespace std; using LL = long long; using pii = pair<int, int>; const int MAXN = 100010; const int MOD = 1000000009; int32_t valid(int32_t n, int32_t inputSeq[]) { vector<int> owo; vector<int> al; int p = -1; For(i, 0, n - 1) { int x = inputSeq[i]; if(x <= n) p = i; al.eb(x); } sort(all(al)); if(unique(all(al)) != al.end()) return 0; if(p == -1) return 1; For(i, 0, n - 1) { int j = (p + i) % n; int vj = (inputSeq[p] - 1 + i) % n + 1; if(inputSeq[j] <= n && inputSeq[j] != vj) return 0; } return 1; } //---------------------- int32_t replacement(int32_t n, int32_t a[], int32_t res[]) { assert(valid(n, a)); vector<pii> v; // {index, value} vector<int> b(n); int p = -1; For(i, 0, n - 1) { if(a[i] > n) v.eb(i, a[i]); else p = i; } sort(all(v), [&](pii p1, pii p2) { return p1.S < p2.S; }); if(p < 0) { For(i, 0, n - 1) b[i] = i + 1; } else { For(i, 0, n - 1) b[(p + i) % n] = (a[p] + i - 1) % n + 1; } int last = n; int ptr = 0; for(auto &it:v) { int t = b[it.F]; For(i, last + 1, it.S) { res[ptr] = (int32_t)t; ptr++; t = i; } last = it.S; } return (int32_t)ptr; } //---------------------- int32_t countReplacement(int32_t n, int32_t a[]) { if(!valid(n, a)) return 0; vector<int> v; int oao = n; For(i, 0, n - 1) { if(a[i] > n) v.eb(a[i]); else oao = 1; } sort(all(v)); reverse(all(v)); if(!sz(v)) return 1; int res = 1; int hi = v[0]; For(i, n + 1, hi) { if(i == v.back()) { v.pop_back(); } else { res = res * sz(v) % MOD; } } res = res * oao % MOD; return (int32_t)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...