求问
查看原帖
求问
1051310
wang6w6楼主2024/11/7 14:25

为什么我5到10和16到20测试点会RE??? 早知道写桶排就好了

#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct stu{
	ll val,s;
}d[100005];
ll n,j=1,ans;
bool cmp(stu x,stu y){
	return x.val<=y.val;
}
int main(){
//	freopen("duel1.in","r",stdin);
//	freopen("duel.out","w",stdout);
	cin>>n;
	for(ll i=1;i<=n;i++){
		cin>>d[i].val;
	}
	sort(d+1,d+1+n,cmp);
	for(ll i=2;i<=n;i++){
		if(d[i].val<=d[j].val||d[i].s==1) continue;
		if(d[i].val>d[j].val&&i!=j&&d[j].s==0){
			d[j].s=1;
			j++;
			continue;
		}
		while(d[i].val<=d[j].val||d[j].s==1){
			j++;
		}
	}
	for(ll i=1;i<=n;i++){
		if(d[i].s==0) ans++;
	}
	cout<<ans;
	return 0;
}
2024/11/7 14:25
加载中...