SGU - 133 - Border (简单统计)

来源:互联网 发布:docker windows程序 编辑:程序博客网 时间:2024/05/14 14:34

133. Border

time limit per test: 0.25 sec. 
memory limit per test: 4096 KB

Along the border between states A and B there are N defence outposts. For every outpost k, the interval [Ak,Bk] which is guarded by it is known. Because of financial reasons, the president of country A decided that some of the outposts should be abandoned. In fact, all the redundant outposts will be abandoned. An outpost i is redundant if there exists some outpost j such that Aj<Ai and Bi<Bj. Your task is to find the number of redundant outposts.

Input

The first line of the input will contain the integer number N (1<=N<=16 000). N lines will follow, each of them containing 2 integers: Ak and Bk (0<= Ak < Bk <= 2 000 000 000), separated by blanks. All the numbers Awill be different. All the numbers Bk will be different.

Output

You should print the number of redundant outposts.

Sample Input

50 102 93 81 156 11

Sample Output

3

Author: Mugurel Ionut AndreicaResource: SSU::Online Contester Fall Contest #2Date: Fall 2002







思路:将整数对按照第一个值升序排列,然后往后遍历,每次的第二个值如果比之前的第二个值中的最大值小,则ans++,注意不要加EOF,会PE


AC代码:

#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;struct node {int x, y;}a[16005];int N;bool cmp(node a, node b) {return a.x < b.x;}int main() {scanf("%d", &N);for(int i = 0; i < N; i++) {scanf("%d %d", &a[i].x, &a[i].y);}sort(a, a + N, cmp);int ans = 0;int MAX = a[0].y;for(int i = 1; i < N; i++) {if(a[i].y < MAX) ans ++;else MAX = a[i].y;}printf("%d\n", ans);return 0;}







0 0