70pts求调
查看原帖
70pts求调
707616
whb569楼主2022/10/16 10:58
#include <iostream>
#include <algorithm>
using namespace std;
struct plane{
	int start,end;
}a[100010],b[100010];
int a2[100010],b2[100010];
int cmp(plane x,plane y)
{
	return x.start<y.start;
}
int main()
{
	int n,ans=0,m1,m2;
	cin>>n>>m1>>m2;
	a2[0]=0;b2[0]=0;
	for(int i=0;i<m1;i++)
	{
		scanf("%d%d",&a[i].start,&a[i].end);
	}
	sort(a,a+m1,cmp);
	for(int i=0;i<m2;i++)
	{
		scanf("%d%d",&b[i].start,&b[i].end);
	}
	sort(b,b+m2,cmp);
    for(int j=1;j<n+1;j++){
	    int stoptime=1;
		for(int i=0;i<m1;i++)
		{
			if(a[i].start&&stoptime<=a[i].start)
			{
				a2[j]++;
				stoptime=a[i].end;
       	    	a[i].start=0;
			}
		}
		a2[j]+=a2[j-1];
		if(a2[j]==m1)break;
	}
    for(int j=1;j<n+1;j++){
		int stoptime=1;
		for(int i=0;i<m2;i++)
		{
			if(b[i].start&&stoptime<=b[i].start)
			{
				b2[j]++;
				stoptime=b[i].end;
      	        b[i].start=0;
			}
		}
		b2[j]+=b2[j-1];
	}
    for(int i=0;i<n+1;i++){
		ans=max(ans,a2[i]+b2[n-i]);
    }
	cout<<ans;
	return 0;
}
2022/10/16 10:58
加载中...