这份代码为什么会TLE
查看原帖
这份代码为什么会TLE
482856
TigerNick楼主2024/8/28 22:22

时间复杂度不应该是nlogn吗

#include <bits/stdc++.h>
#define int long long
#define MAXN 50010
#define INF 10000000000
using namespace std;
int n,a[MAXN],b[MAXN],ans;
multiset<int> S;
signed main()
{
	ios::sync_with_stdio(0);
	cin>>n;
	S.insert(INF);S.insert(-INF);
	for(int i=1;i<=n;i++) cin>>b[i],S.insert(b[i]);
	for(int j=1;j<=n;j++) cin>>a[j];
	for(int i=1;i<=n;i++)
	{
		auto it=lower_bound(S.begin(),S.end(),a[i]);
		if(*it!=INF&&*it!=-INF)
		{
			if(*it>a[i])
				ans++;
			S.erase(it);
		}
		else
		{
			auto itt=S.begin();
			itt++;
			S.erase(itt);
		}
	}
	cout<<ans;
    return 0;
}
2024/8/28 22:22
加载中...