652D - Nested Segments - CodeForces Solution


data structures sortings *1800

Please click on ads to support us..

C++ Code:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<functional>
#include<vector>
#include<queue>
#include<unordered_map>
#include<numeric>
using namespace std;

const int N = 200004;

struct interval {
    int l, r, i;
}e[N];
int x[N << 1];
int f[N << 1];
int ans[N];
int n;

int lb(int x) { return x & -x; }

void add(int x) {
    while(x <= n * 2) {
	f[x] += 1;
	x += lb(x);
    }
}

int query(int x) {
    int res = 0;
    while(x) {
	res += f[x];
	x -= lb(x);
    }
    return res;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    memset(f, 0, sizeof(f));
    int l, r, y, i, j;
    cin >> n;
    j = 0;
    for(i = 0; i < n; i++) {
	cin >> e[i].l >> e[i].r;
	x[j++] = e[i].l;
	x[j++] = e[i].r;
	e[i].i = i;
    }
    sort(e, e + n, [&](auto p, auto q) { return p.r == q.r ? p.l > q.l : p.r < q.r; });
    sort(x, x + (n << 1));
    for(i = 0; i < n; i++) {
	y = upper_bound(x, x + n * 2, e[i].l) - x;
	ans[e[i].i] = query(n * 2) - query(y);
	add(y);
    }
    for(i = 0; i < n; i++) cout << ans[i] << '\n';
    return 0;
}


Comments

Submit
0 Comments
More Questions

1302. Deepest Leaves Sum
1209. Remove All Adjacent Duplicates in String II
994. Rotting Oranges
983. Minimum Cost For Tickets
973. K Closest Points to Origin
969. Pancake Sorting
967. Numbers With Same Consecutive Differences
957. Prison Cells After N Days
946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST