CF->CodeForces 137C

来源:互联网 发布:js 数组去掉最后一个 编辑:程序博客网 时间:2024/05/01 21:49
Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u
Submit Status Practice CodeForces 137C

Description

Polycarpus likes studying at school a lot and he is always diligent about his homework. Polycarpus has never had any problems with natural sciences as his great-great-grandfather was the great physicist Seinstein. On the other hand though, Polycarpus has never had an easy time with history.

Everybody knows that the World history encompasses exactly n events: the i-th event had continued from the year ai to the year biinclusive (ai < bi). Polycarpus easily learned the dates when each of n events started and ended (Polycarpus inherited excellent memory from his great-great-granddad). But the teacher gave him a more complicated task: Polycaprus should know when all events began and ended and he should also find out for each event whether it includes another event. Polycarpus' teacher thinks that an event j includes an event i if aj < ai and bi < bj. Your task is simpler: find the number of events that are included in some other event.

Input

The first input line contains integer n (1 ≤ n ≤ 105) which represents the number of events. Next n lines contain descriptions of the historical events, one event per line. The i + 1 line contains two integers ai and bi (1 ≤ ai < bi ≤ 109) — the beginning and the end of the i-th event. No two events start or finish in the same year, that is, ai ≠ aj, ai ≠ bj, bi ≠ aj, bi ≠ bj for all ij (where i ≠ j). Events are given in arbitrary order.

Output

Print the only integer — the answer to the problem.

Sample Input

Input
51 102 93 84 75 6
Output
4
Input
51 1002 5051 9952 9810 60
Output
4
Input
11 1000000000
Output
0
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;struct Events{    int b;    int e;}events[100001];bool cmp(Events a, Events b){    return a.b < b.b;}int main(){    int t;    cin >> t;    for (int i = 0; i < t; i++)    {        scanf("%d %d", &events[i].b, &events[i].e);    }    sort(events, events + t, cmp);    int maxn = events[0].e, num = 0;    for (int i = 1; i < t; i++)    {        if (events[i].e < maxn)        {            num++;        }        else        {            maxn = events[i].e;        }    }    cout << num << endl;    return 0;}


Hint

In the first example the fifth event is contained in the fourth. Similarly, the fourth event is contained in the third, the third — in the second and the second — in the first.

In the second example all events except the first one are contained in the first.

In the third example only one event, so the answer is 0.

原创粉丝点击