考场最后交的这么做的,洛谷A了但是快超时了。 记录:recond 很奇怪,最后想到 O(nlogn) 做法但没打完\kk。
民间数据不强???
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define endl '\n'
const int N = 1e5 + 5;
int a[N],n;
bool pd[N];
int in(){
char a = getchar();
int k = 0, kk = 1;
while(a>'9'||a<'0'){
if(a=='-') kk=-1;
a = getchar();
}
while(a>='0'&&a<='9'){
k = k*10 + a - '0';
a = getchar();
}
return k*kk;
}
signed main(){
// freopen("duel3.in","r",stdin);
// freopen("out.txt","w",stdout);
n = in();
rep(i,1,n) a[i] = in();
sort(a+1,a+1+n);
int can = 0;
rep(i,1,n-1){
int l = i+1, r = n+1;
while(l<r){
int mid = l+r>>1;
if(a[mid]>a[i]) r = mid;
else l = mid + 1;
}
while(pd[l]&&l<=n) l++;
if(l<=n){
pd[l] = 1;
can++;
}
}
cout << n - can << endl;
return 0;
}
/*
5
1 2 3 1 2*/