帮帮65分还有WA的孩子吧!!
查看原帖
帮帮65分还有WA的孩子吧!!
396994
Winston12321_楼主2021/12/26 12:34

代码如下:

//#include <cstdio>
#include <iostream>
#include <cctype>
#include <algorithm>
using namespace std;
int n,m1,m2,ans;
int h[100010],r[100010][2];
struct p
{
	int ar;
	int le;
} plane[100010];//存时间
int read()
{
    int s=0,f=1;
    char ch=getchar();
    while(!isdigit(ch))
	{
        if(ch=='-') f=-1;
        ch=getchar();
    }
    while(isdigit(ch))
	{
        s=s*10+ch-'0';
        ch=getchar();
    }
    return s*f;
}
void write(int x)
{
    if(x < 0)
	{
        putchar('-');
        x=-x;
    }
    if(x>9) write(x/10);
    putchar(x%10+'0');
    return;
}
bool cmp(p n1,p n2)
{
	return n1.ar<n2.ar;
}
int main()
{
    //freopen("airport.in","r",stdin);
    //freopen("airport.out","w",stdout);
    n=read();
    m1=read();
    m2=read();
    for(int i=1;i<=m1+m2;i++)
    {
    	plane[i].ar=read();
    	plane[i].le=read();
	}
	sort(plane+1,plane+m1+1,cmp);
	sort(plane+m1+1,plane+m1+m2+1,cmp);
	bool b=1;
	int c=1;
	int l;
	while(b && c<=n)
	{
		b=0;
		l=0;
		for(int i=1;i<=m1;i++)
		{
			if(plane[i].ar>l && h[i]==0)
			{
				h[i]=c;//标记
				r[c][0]++;
				l=plane[i].le;
				b=1;
			}
		}
		c++;
		r[c][0]+=r[c-1][0];
	}
	b=1;
	c=1;
	while(b && c<=n)
	{
		b=0;
		l=0;
		for(int i=m1+1;i<=m1+m2;i++)
		{
			if(plane[i].ar>l && h[i]==0)
			{
				h[i]=c;
				r[c][1]++;
				l=plane[i].le;
				b=1;
			}
		}
		c++;
		r[c][1]+=r[c-1][1];
	}
	for(int i=0;i<=n;i++) ans=max(ans,r[i][0]+r[n-i][1]);
	write(ans);
	return 0;
}
2021/12/26 12:34
加载中...