Submission #739997

#TimeUsernameProblemLanguageResultExecution timeMemory
739997baneCryptography (NOI20_crypto)C++17
100 / 100
319 ms32340 KiB
#include<bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; #define int long long const int MOD = (int)1e9 + 7; template<typename T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; const int maxN = (int)1e6+1; class Solution{ private: int N, P[maxN]; public: void init(){ cin >> N; for(int i = 0; i < N; i++){ cin >> P[i]; } } int Solve(){ int ans = 1; Tree<int>t; int fact[N+1]; fact[0]=1; for (int i = 1; i<=N; i++){ fact[i] = (fact[i - 1] * i)%MOD; } for (int i = N - 1; i >= 0; i--){ t.insert(P[i]); int pos = t.order_of_key(P[i]); ans = (ans + pos * fact[N - i - 1])%MOD; } return ans; } }; signed main(){ ios::sync_with_stdio(0); cin.tie(0); Solution resenie; resenie.init(); cout<<resenie.Solve(); 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...