Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1.     #include <bits/stdc++.h>
  2.     using namespace std;
  3.      
  4.     #define endl '\n'
  5.     #define st first
  6.     #define nd second
  7.     #define pb push_back
  8.     #define db(x) cout << #x  << " == " << (x) << endl
  9.     #define dbs(x) cout << x << endl
  10.     typedef long long ll;
  11.     typedef vector <int> vi;
  12.     typedef pair <int, int> pii;
  13.     const int N = 4e5+5;
  14.      
  15.     int bit[N], l[N], r[N], ans[N];
  16.     int n, cnt=0;
  17.     map <int, int> cp, id;
  18.     vi compress;
  19.      
  20.     void add(int p){
  21.       for(; p<=cnt; p+=p&(-p)) bit[p]++;
  22.     }
  23.      
  24.     int sum(int p){
  25.       int ans=0;
  26.       for(; p>=1; p-=p&(-p)) ans+=bit[p];
  27.       return ans;
  28.     }
  29.      
  30.     int main(){
  31.       ios_base::sync_with_stdio(0);
  32.       cin.tie(0);
  33.       cin >> n;
  34.       int a, b;
  35.       for(int i=1; i<=n; i++){
  36.         cin >> a >> b;
  37.         l[i]=a, r[i]=b;
  38.         id[a]=i;
  39.         compress.pb(a), compress.pb(b);
  40.       }
  41.       sort(l+1, l+n+1);
  42.       sort(compress.begin(), compress.end());
  43.       for(auto v: compress) cp[v]=++cnt;
  44.      
  45.       for(int i=n; i>=1; i--){
  46.         int idx=id[l[i]];
  47.         a=cp[l[i]], b=cp[r[idx]];
  48.         ans[idx]=sum(b)-sum(a-1);
  49.         add(b);
  50.       }
  51.      
  52.       for(int i=1; i<=n; i++) cout << ans[i] << endl;
  53.      
  54.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement