#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define oset tree<int, null_type,less_equal<int>, rb_tree_tag,tree_order_statistics_node_update>
template<typename... T>
void see(T&... args) {((cin >> args), ...);}
template<typename... T>
void put(T&&... args) {((cout << args << ' '), ...);}
template<typename... T>
void putl(T&&... args) {((cout << args << ' '), ...); cout << '\n';}
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define int long long
#define F first
#define S second
#define ii pair<int, int>
#define vt vector
#define pb push_back
#define all(a) (a).begin(), (a).end()
#define sz size()
#define endl '\n'
#define rep(i,a,b) for(int i=a; i<=b; i++)
#define rev(i,b,a) for(int i=b; i>=a; i--)
#define reada(a,x,y) for(int i=x; i<=y; i++){cin >> a[i];}
const int M = 1e9+7;
const int Mxn = 1e6, Nxn = 2*1e5, Mxm = 3e5+5, Nxm = 1005, Dxn = 1e9+1;
int a[Mxm];
vt<int> t[4*Mxm];
void build(int id, int L, int R) {
if(L == R) {
t[id].pb(a[L]);
return;
}
int mid = (L+R)/2;
build(2*id, L, mid);
build(2*id+1, mid+1, R);
int n = t[2*id].sz, m = t[2*id+1].sz, i = 0, j = 0;
while(i < n && j < m) {
if(t[2*id][i] < t[2*id+1][j]) {
t[id].pb(t[2*id][i]);
i++;
}
else {
t[id].pb(t[2*id+1][j]);
j++;
}
}
while(i < n) {
t[id].pb(t[2*id][i]);
i++;
}
while(j < m) {
t[id].pb(t[2*id+1][j]);
j++;
}
}
int query(int id, int L, int R, int l, int r, int x) {
if(L > r || R < l) return 0;
if(l <= L && R <= r) {
int n = t[id].sz;
int k = upper_bound(all(t[id]), x) - t[id].begin();
return k;
}
int mid = (L+R)/2;
return query(2*id, L, mid, l, min(r, mid), x) + query(2*id+1, mid+1, R, max(l, mid+1), r, x);
}
int f[Mxm];
void fact(int n) {
f[1] = 1;
for(int i = 2; i <= n; i++) {
f[i] = f[i - 1] * i % M;
}
}
void solve() {
int n; see(n);
rep(i,1,n) see(a[i]);
build(1, 1, n);
fact(n);
int s = 0;
rep(i,1,n-1) {
s += ((query(1, 1, n, i+1, n, a[i]) * f[n - i])) % M;
}
cout << s + 1;
return;
}
signed main() { IOS
int t=1;
//cin >> t;
while(t--) {
solve();
cout << endl;
}
return 0;
}
Compilation message
Crypto.cpp: In function 'long long int query(long long int, long long int, long long int, long long int, long long int, long long int)':
Crypto.cpp:76:13: warning: unused variable 'n' [-Wunused-variable]
76 | int n = t[id].sz;
| ^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
15 ms |
28500 KB |
Output is correct |
2 |
Correct |
16 ms |
28500 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
15 ms |
28500 KB |
Output is correct |
2 |
Correct |
16 ms |
28500 KB |
Output is correct |
3 |
Correct |
15 ms |
28500 KB |
Output is correct |
4 |
Correct |
14 ms |
28468 KB |
Output is correct |
5 |
Correct |
14 ms |
28500 KB |
Output is correct |
6 |
Correct |
15 ms |
28508 KB |
Output is correct |
7 |
Correct |
15 ms |
28496 KB |
Output is correct |
8 |
Correct |
18 ms |
28500 KB |
Output is correct |
9 |
Correct |
16 ms |
28512 KB |
Output is correct |
10 |
Correct |
17 ms |
28500 KB |
Output is correct |
11 |
Correct |
16 ms |
28512 KB |
Output is correct |
12 |
Correct |
16 ms |
28432 KB |
Output is correct |
13 |
Correct |
16 ms |
28388 KB |
Output is correct |
14 |
Correct |
16 ms |
28516 KB |
Output is correct |
15 |
Correct |
17 ms |
28500 KB |
Output is correct |
16 |
Correct |
15 ms |
28508 KB |
Output is correct |
17 |
Correct |
16 ms |
28628 KB |
Output is correct |
18 |
Correct |
14 ms |
28468 KB |
Output is correct |
19 |
Correct |
16 ms |
28484 KB |
Output is correct |
20 |
Correct |
17 ms |
28460 KB |
Output is correct |
21 |
Correct |
16 ms |
28500 KB |
Output is correct |
22 |
Correct |
16 ms |
28500 KB |
Output is correct |
23 |
Correct |
19 ms |
28500 KB |
Output is correct |
24 |
Correct |
16 ms |
28472 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
28496 KB |
Output is correct |
2 |
Incorrect |
271 ms |
108172 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
15 ms |
28500 KB |
Output is correct |
2 |
Correct |
261 ms |
108084 KB |
Output is correct |
3 |
Correct |
264 ms |
109836 KB |
Output is correct |
4 |
Correct |
271 ms |
109864 KB |
Output is correct |
5 |
Correct |
265 ms |
109860 KB |
Output is correct |
6 |
Correct |
312 ms |
109828 KB |
Output is correct |
7 |
Correct |
251 ms |
109864 KB |
Output is correct |
8 |
Correct |
266 ms |
109992 KB |
Output is correct |
9 |
Correct |
258 ms |
109736 KB |
Output is correct |
10 |
Correct |
262 ms |
109904 KB |
Output is correct |
11 |
Correct |
265 ms |
109864 KB |
Output is correct |
12 |
Correct |
262 ms |
109864 KB |
Output is correct |
13 |
Correct |
254 ms |
109744 KB |
Output is correct |
14 |
Correct |
253 ms |
109856 KB |
Output is correct |
15 |
Correct |
260 ms |
109828 KB |
Output is correct |
16 |
Correct |
269 ms |
109860 KB |
Output is correct |
17 |
Correct |
259 ms |
109736 KB |
Output is correct |
18 |
Correct |
262 ms |
109860 KB |
Output is correct |
19 |
Correct |
253 ms |
109864 KB |
Output is correct |
20 |
Correct |
274 ms |
109864 KB |
Output is correct |
21 |
Correct |
249 ms |
109872 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
14 ms |
28464 KB |
Output is correct |
2 |
Incorrect |
21 ms |
29104 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
15 ms |
28500 KB |
Output is correct |
2 |
Correct |
16 ms |
28500 KB |
Output is correct |
3 |
Correct |
15 ms |
28500 KB |
Output is correct |
4 |
Correct |
14 ms |
28468 KB |
Output is correct |
5 |
Correct |
14 ms |
28500 KB |
Output is correct |
6 |
Correct |
15 ms |
28508 KB |
Output is correct |
7 |
Correct |
15 ms |
28496 KB |
Output is correct |
8 |
Correct |
18 ms |
28500 KB |
Output is correct |
9 |
Correct |
16 ms |
28512 KB |
Output is correct |
10 |
Correct |
17 ms |
28500 KB |
Output is correct |
11 |
Correct |
16 ms |
28512 KB |
Output is correct |
12 |
Correct |
16 ms |
28432 KB |
Output is correct |
13 |
Correct |
16 ms |
28388 KB |
Output is correct |
14 |
Correct |
16 ms |
28516 KB |
Output is correct |
15 |
Correct |
17 ms |
28500 KB |
Output is correct |
16 |
Correct |
15 ms |
28508 KB |
Output is correct |
17 |
Correct |
16 ms |
28628 KB |
Output is correct |
18 |
Correct |
14 ms |
28468 KB |
Output is correct |
19 |
Correct |
16 ms |
28484 KB |
Output is correct |
20 |
Correct |
17 ms |
28460 KB |
Output is correct |
21 |
Correct |
16 ms |
28500 KB |
Output is correct |
22 |
Correct |
16 ms |
28500 KB |
Output is correct |
23 |
Correct |
19 ms |
28500 KB |
Output is correct |
24 |
Correct |
16 ms |
28472 KB |
Output is correct |
25 |
Correct |
14 ms |
28464 KB |
Output is correct |
26 |
Incorrect |
21 ms |
29104 KB |
Output isn't correct |
27 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
15 ms |
28500 KB |
Output is correct |
2 |
Correct |
261 ms |
108084 KB |
Output is correct |
3 |
Correct |
264 ms |
109836 KB |
Output is correct |
4 |
Correct |
271 ms |
109864 KB |
Output is correct |
5 |
Correct |
265 ms |
109860 KB |
Output is correct |
6 |
Correct |
312 ms |
109828 KB |
Output is correct |
7 |
Correct |
251 ms |
109864 KB |
Output is correct |
8 |
Correct |
266 ms |
109992 KB |
Output is correct |
9 |
Correct |
258 ms |
109736 KB |
Output is correct |
10 |
Correct |
262 ms |
109904 KB |
Output is correct |
11 |
Correct |
265 ms |
109864 KB |
Output is correct |
12 |
Correct |
262 ms |
109864 KB |
Output is correct |
13 |
Correct |
254 ms |
109744 KB |
Output is correct |
14 |
Correct |
253 ms |
109856 KB |
Output is correct |
15 |
Correct |
260 ms |
109828 KB |
Output is correct |
16 |
Correct |
269 ms |
109860 KB |
Output is correct |
17 |
Correct |
259 ms |
109736 KB |
Output is correct |
18 |
Correct |
262 ms |
109860 KB |
Output is correct |
19 |
Correct |
253 ms |
109864 KB |
Output is correct |
20 |
Correct |
274 ms |
109864 KB |
Output is correct |
21 |
Correct |
249 ms |
109872 KB |
Output is correct |
22 |
Correct |
14 ms |
28464 KB |
Output is correct |
23 |
Incorrect |
21 ms |
29104 KB |
Output isn't correct |
24 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
15 ms |
28500 KB |
Output is correct |
2 |
Correct |
16 ms |
28500 KB |
Output is correct |
3 |
Correct |
15 ms |
28500 KB |
Output is correct |
4 |
Correct |
14 ms |
28468 KB |
Output is correct |
5 |
Correct |
14 ms |
28500 KB |
Output is correct |
6 |
Correct |
15 ms |
28508 KB |
Output is correct |
7 |
Correct |
15 ms |
28496 KB |
Output is correct |
8 |
Correct |
18 ms |
28500 KB |
Output is correct |
9 |
Correct |
16 ms |
28512 KB |
Output is correct |
10 |
Correct |
17 ms |
28500 KB |
Output is correct |
11 |
Correct |
16 ms |
28512 KB |
Output is correct |
12 |
Correct |
16 ms |
28432 KB |
Output is correct |
13 |
Correct |
16 ms |
28388 KB |
Output is correct |
14 |
Correct |
16 ms |
28516 KB |
Output is correct |
15 |
Correct |
17 ms |
28500 KB |
Output is correct |
16 |
Correct |
15 ms |
28508 KB |
Output is correct |
17 |
Correct |
16 ms |
28628 KB |
Output is correct |
18 |
Correct |
14 ms |
28468 KB |
Output is correct |
19 |
Correct |
16 ms |
28484 KB |
Output is correct |
20 |
Correct |
17 ms |
28460 KB |
Output is correct |
21 |
Correct |
16 ms |
28500 KB |
Output is correct |
22 |
Correct |
16 ms |
28500 KB |
Output is correct |
23 |
Correct |
19 ms |
28500 KB |
Output is correct |
24 |
Correct |
16 ms |
28472 KB |
Output is correct |
25 |
Correct |
16 ms |
28496 KB |
Output is correct |
26 |
Incorrect |
271 ms |
108172 KB |
Output isn't correct |
27 |
Halted |
0 ms |
0 KB |
- |