题目链接:
http://acm.zjnu.edu.cn/CLanguage/showproblem?problem_id=1426
思路:简单的涂色问题。主要要用到离散化。
代码:
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int max(int a,int b)
{
return a>b?a:b;
}
int a[2000005],d[1000005],f[1000005];
struct node{
int x,y;
}p[1000005];
int main()
{
int n,i,j,k;
scanf("%d",&n);
k=1;
for(i=1;i<=n;i++)
{
scanf("%d%d",&p[i].x,&p[i].y);
a[k]=p[i].x;
k++;
a[k]=p[i].y;
k++;
}
k--;
sort(a+1,a+1+k);
int siz=unique(a+1,a+k+1)-a-1;
for(i=1;i<=n;i++)
{
int x,y;
x=lower_bound(a+1,a+siz+1,p[i].x)-a-1;
y=lower_bound(a+1,a+1+siz,p[i].y)-a-1;
d[x]++;
d[y+1]--;
}
f[0]=d[0];
int maxi=0;
for(i=1;i<=siz;i++)
{f[i]=f[i-1]+d[i];
maxi=max(maxi,f[i]);
}
printf("%d\n",maxi);
}