有一点不一样的写法,40分,求差错
查看原帖
有一点不一样的写法,40分,求差错
90971
智子·起源楼主2021/6/2 13:05
#include<bits/stdc++.h>
using namespace std;
int n,a[1000000+5],b[1000000+5],que[1000000+5],quee[1000000+5],t,h=1,tt,hh=1,ans,hhh=1;
int main()
{
  scanf("%d",&n);
  for(int i=1;i<=n;i++)scanf("%d%d",&a[i],&b[i]);
  for(int i=1;i<=n;i++)
  {
    while(h<=t&&a[que[t]]<=a[i])t--;
    que[++t]=i;
    while(hh<=tt&&b[quee[tt]]>=b[i])tt--;
    quee[++tt]=i;
    while(b[quee[hh]]<a[que[h]]&&quee[hh]>=que[h])
    {
      hhh++;
      while(que[h]<hhh&&h<=t)h++;
      while(quee[hh]<hhh&&hh<=tt)hh++;
	}
	ans=max(ans,i-hhh+1);
  }
  printf("%d",ans);
	return 0;
}
2021/6/2 13:05
加载中...