Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef vector<long long> vll;
- #define ll long long
- #define pb push_back
- #define sz size()
- #define all(a) a.begin(),a.end()
- #define mem(a,b) memset(a,b,sizeof(a))
- ll arr[200005],n,res;
- vll v[200005];
- void update(int idx,int val) {
- while(idx<=n) {
- v[idx].pb(val);
- idx+=(idx & -idx);
- }
- }
- void query(int idx, ll val) {
- while(idx>0) {
- int pos;
- pos=upper_bound(all(v[idx]),val)-v[idx].begin();
- res+=(v[idx].sz-pos);
- idx-=(idx & -idx);
- }
- }
- int main()
- {
- ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
- int t; cin>>t;
- cout<<endl;
- char ch;
- while(t--) {
- char ignore[10];
- cin.getline(ignore,10);
- cin>>n;
- for(int i=1;i<=n;i++) {
- cin>>arr[i];
- update(i,arr[i]);
- }
- for(int i=1;i<=n;i++) sort(all(v[i]));
- res=0;
- for(int i=1;i<=n;i++) {
- query(i,arr[i]);
- }
- cout<<res<<endl;
- for(int i=1;i<=n;i++) v[i].clear();
- mem(arr,0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment