Submission #1308521

#TimeUsernameProblemLanguageResultExecution timeMemory
1308521MahogCryptography (NOI20_crypto)C++20
100 / 100
444 ms19236 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); typedef long long ll; const int MAX = 3e5 + 2; const int MOD = 1e9 + 7; ll a[MAX], fact[MAX], n; void solve() { cin >> n; ordered_set st; for (int i = 1; i <= n; i++) { cin >> a[i]; st.insert(a[i]); } fact[0] = 1; for (int i = 1; i <= n; i++) fact[i] = fact[i - 1] * i % MOD; ll res = 0; for (int i = 1; i <= n; i++) { int temp = st.order_of_key(a[i]); res = (res + fact[n - i] * temp) % MOD; st.erase(a[i]); } cout << (res + 1) % MOD; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); solve(); }
#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...