已AC,但感觉时间复杂度不太对,有大佬能帮忙分析一下时间复杂度吗
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
long long n,ans=0,lx[maxn],ly[maxn],rx[maxn],ry[maxn];
void upfloat(long long llx,long long lly,long long urx,long long ury,int cur)
{
while(cur<=n&&(llx>=rx[cur]||lly>=ry[cur]||urx<=lx[cur]||ury<=ly[cur])) cur++;
if(cur>n)
{
ans+=(urx-llx)*(ury-lly);
return;
}
if(llx<lx[cur]&&lx[cur]<urx) upfloat(llx,lly,lx[cur],ury,cur+1),llx=lx[cur];
if(lly<ly[cur]&&ly[cur]<ury) upfloat(llx,lly,urx,ly[cur],cur+1),lly=ly[cur];
if(llx<rx[cur]&&rx[cur]<urx) upfloat(rx[cur],lly,urx,ury,cur+1),urx=rx[cur];
if(lly<ry[cur]&&ry[cur]<ury) upfloat(llx,ry[cur],urx,ury,cur+1),ury=ry[cur];
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>lx[i]>>ly[i]>>rx[i]>>ry[i];
ans=(rx[n]-lx[n])*(ry[n]-ly[n]);
for(int i=n-1;i>=1;i--)
upfloat(lx[i],ly[i],rx[i],ry[i],i+1);
cout<<ans<<endl;
return 0;
}