This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |