Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #include <ext/pb_ds/tree_policy.hpp>
- #include <ext/pb_ds/assoc_container.hpp>
- using namespace std;
- // using namespace __gnu_pbds;
- #define mod 1000000007
- #define rep(i, n) for(int i = 0; i < n; i++)
- #define rep1(i,a,b) for(int i=a;i<b;i++)
- #define endl "\n"
- #define PI 3.14159265358979323846 /* pi */
- #define is_pot(n) (n&& !(n&(n-1)))
- #define all(v) ((v).begin()),((v).end())
- #define degreesToRadians(angleDegrees) (angleDegrees * PI / 180.0) // Converts degrees to radians.
- #define radiansToDegrees(angleRadians) (angleRadians * 180.0 / PI) // Converts radians to degrees.
- #define int long long
- #define fastio ios_base::sync_with_stdio(false); cin.tie(NULL);
- #define epsilon 1e-9
- typedef long long ll;
- typedef long double ld;
- // template <typename T> using ordered_set = tree <T, null_type, less <T>, rb_tree_tag, tree_order_statistics_node_update>;
- int dx[]={1, 0, -1, 0};
- int dy[]={0, 1, 0, -1};
- const int N=4e5+5;
- int tree[2*N], sz, fre[N];
- void init(int n)
- {
- sz=1;
- while(sz<n)
- sz*=2;
- }
- void update(int i, int v, int node, int lx, int rx)
- {
- if(rx-lx==1)
- {
- tree[node]=v;
- return;
- }
- int mid=(lx+rx)/2;
- if(i<mid)
- update(i, v, 2*node+1, lx, mid);
- else
- update(i, v, 2*node+2, mid, rx);
- tree[node]=tree[2*node+1]+tree[2*node+2];
- }
- int query(int l, int r, int node, int lx, int rx)
- {
- if(lx>=r || rx<=l)
- return 0;
- if(lx>=l && rx<=r)
- return tree[node];
- int mid=(lx+rx)/2;
- return query(l, r, 2*node+1, lx, mid)+query(l, r, 2*node+2, mid, rx);
- }
- void solve()
- {
- int n;
- cin>>n;
- n*=2;
- init(n);
- vector<int> ans(n/2+1), dis(n/2+1, 0);
- for(int i=0;i<n;i++)
- {
- int x;
- cin>>x;
- if(!fre[x])
- fre[x]=i+1;
- else
- {
- dis[x]=i-fre[x];
- int l=fre[x]-1;
- int r=i+1;
- ans[x]=query(l, r, 0, 0, sz);
- update(l, 1, 0, 0, sz);
- }
- }
- for(int i=1;i<=n/2;i++)
- cout<<dis[i]-2*ans[i]<<" ";
- }
- signed main() {
- fastio
- // int t;cin>>t;while(t--)
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement