以下是一个理论复杂度 O(n2) 的代码,但是我自己没有办法把它卡掉。
vector 的 erase(begin()) 是 O(n)的。
最慢的点 150ms,本地极限数据 0.2s
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int n,r[N];
vector<int> v;
inline int read(){
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
int main(){
n=read();
for(int i=1;i<=n;i++)r[i]=read();
sort(r+1,r+1+n);
int ans=n;
for(int i=1;i<=n;i++){
if(!v.empty()&&r[i]>v[0]){
ans--;
v.erase(v.begin());
}
v.push_back(r[i]);
}
cout<<ans;
return 0;
}