Skip to content

Commit 7079d11

Browse files
Remove Prashant's CP template code
1 parent a3cfe4b commit 7079d11

1 file changed

Lines changed: 1 addition & 110 deletions

File tree

Lines changed: 1 addition & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -1,110 +1 @@
1-
// ----------------------------------------------------------------------
2-
// ██████╗ ██████╗ ██████╗ ███████╗
3-
// ██╔════╝██╔═══██╗██╔══██╗██╔════╝
4-
// ██║ ██║ ██║██║ ██║█████╗
5-
// ██║ ██║ ██║██║ ██║██╔══╝
6-
// ╚██████╗╚██████╔╝██████╔╝███████╗
7-
// ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝
8-
// ----------------------------------------------------------------------
9-
// Prashant'S CP TEMPLATE
10-
// "Think. Code. Conquer."
11-
// ----------------------------------------------------------------------
12-
#include<iostream>
13-
#include<vector>
14-
#include<algorithm>
15-
#include<unordered_map>
16-
#include<bit>
17-
#include<map>
18-
#include<set>
19-
#include<queue>
20-
#include<stack>
21-
#include<string>
22-
#include<iterator>
23-
#include<cmath>
24-
#include<iomanip>
25-
#include<climits>
26-
#include<cstdint>
27-
#include<cstdlib>
28-
using namespace std;
29-
#define ll long long
30-
#define int long long
31-
#define MOD 1000000007
32-
#define pb push_back
33-
#define all(v) v.begin(),v.end()
34-
#define rall(v) v.rbegin(),v.rend()
35-
#define sz(x) (int)(x).size()
36-
#define srt(v) sort(v.begin(),v.end())
37-
#define Rsrt(v) sort(v.begin(),v.end(),greater<int>())
38-
#define endl "\n"
39-
#define F first
40-
#define S second
41-
#define vi vector<int>
42-
#define vc vector<char>
43-
#define vb vector<bool>
44-
#define vvi vector<vector<int>>
45-
#define pii pair<int,int>
46-
#define umap unordered_map
47-
#define mii map<int,int>
48-
#define fr(i,a,b) for(int i=a;i<b;i++)
49-
#define frr(i,a,b) for(int i=a;i>b;i--)
50-
#define mxe(v) *max_element(v.begin(),v.end())
51-
#define mne(v) *min_element(v.begin(),v.end())
52-
class FenwickTree{
53-
public:
54-
vi tree;
55-
int n;
56-
FenwickTree(int size){
57-
n=size;
58-
tree.assign(n+1,0);
59-
}
60-
void update(int idx,int val){
61-
while(idx<=n){
62-
tree[idx]+=val;
63-
idx+=idx&(-idx);
64-
}
65-
}
66-
int query(int idx){
67-
int sum=0;
68-
while(idx>0){
69-
sum+=tree[idx];
70-
idx-=idx&(-idx);
71-
}
72-
return sum;
73-
}
74-
};
75-
signed main(){
76-
ios_base::sync_with_stdio(false);
77-
cin.tie(NULL);
78-
int n;
79-
cin>>n;
80-
vi a(n);
81-
fr(i,0,n) cin>>a[i];
82-
vi sorted_a=a;
83-
srt(sorted_a);
84-
map<int,int> compress;
85-
fr(i,0,n){
86-
compress[sorted_a[i]]=i+1;
87-
}
88-
vi compressed(n);
89-
fr(i,0,n){
90-
compressed[i]=compress[a[i]];
91-
}
92-
vi leftGreater(n);
93-
FenwickTree ft1(n);
94-
fr(i,0,n){
95-
leftGreater[i]=i-ft1.query(compressed[i]);
96-
ft1.update(compressed[i],1);
97-
}
98-
vi rightSmaller(n);
99-
FenwickTree ft2(n);
100-
frr(i,n-1,-1){
101-
rightSmaller[i]=ft2.query(compressed[i]-1);
102-
ft2.update(compressed[i],1);
103-
}
104-
int answer=0;
105-
fr(i,0,n){
106-
answer+=leftGreater[i]*rightSmaller[i];
107-
}
108-
cout<<answer<<endl;
109-
return 0;
110-
}
1+

0 commit comments

Comments
 (0)