#include #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #define fi first #define se second #define int long long #define vec vector #define all(m) (m).begin(), (m).end() using namespace std; typedef pair pii; const int inf = 2e18; int tree[8000008]; void build(int v, int tl, int tr){ if(tl > tr) return; if(tl == tr){ tree[tl] = 0; return; } int mid = (tl + tr) >> 1; build(v * 2, tl, mid); build(v * 2 + 1, mid+1, tr); tree[v] = tree[v * 2] + tree[v * 2 + 1]; } int get(int v, int tl, int tr, int l, int r){ if(tr < l || r < tl){ return 0; } if(tl <= l && r <= tr){ return tree[v]; } int mid = (l + r) >> 1; int s1 = get(v * 2, tl, tr, l, mid); int s2 = get(v * 2 + 1, tl, tr, mid+1, r); return s1 + s2; } void update(int v, int ind, int l, int r){ if(r < ind || l > ind){ return; } // cout << l << " " << r << "\n"; if(l == r && l == ind){ tree[v]++; return; } int mid = (l + r) >> 1; update(v * 2, ind, l, mid); update(v * 2 + 1, ind, mid+1, r); tree[v] = tree[v * 2] + tree[v * 2 + 1]; } void solve() { int n; cin>>n; int ans = 0; build(1, 0, n+1); //cout << "gadg\n"; for(int i = 0;i>k; vec a(k); for(int j = 0;j>a[j]; ans += get(1, a[j] + 1, n, 0, n); } for(int j = 0;j