Submission #1268185

#TimeUsernameProblemLanguageResultExecution timeMemory
1268185aryanCryptography (NOI20_crypto)C++20
0 / 100
1 ms324 KiB
#include<bits/stdc++.h> using namespace std; using i64 = long long; const int mod = 1e9 + 7; int main(){ int n; cin >> n; vector<int> fact(n + 1,1); vector<int> idx(n); for(int i = 1;i <= n;i++){ fact[i] = (fact[i - 1] * 1LL * i) % mod; } vector<int> a(n); for(int i = 0;i < n;i++){ cin >> a[i]; } iota(idx.begin(),idx.end(),0); sort(idx.begin(),idx.end(),[&](int i,int j){ return a[i] < a[j]; }); for(int i = 0;i < n;i++){ // cout << idx[i] << '\n'; a[idx[i]] = i + 1; } vector<int> le(n); for(int i = 0;i < n;i++){ for(int j = 0;j < i;j++){ le[i] += (a[i] > a[j]); } } int ans = 0; for(int i = 0;i < n - 1;i++){ int totb = a[i] - 1 - le[i]; assert(totb >= 0); ans += (fact[n - i - 1] * 1LL * totb) % mod; ans %= mod; } ans ++; ans %= mod; cout << ans + 1 << '\n'; 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...