题解
2025-10-01 22:01:05
发布于:广东
5阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int m,n,k,b[100001],c[100001],anss,ans,maxn,maxk=1e9,ti[100001];
pair<int,int>a[100001];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> m >> n >> k;
for(int i = 1;i <= n;i++){
cin >> a[i].second;
ti[a[i].second]++;
}
for(int i = 1;i <= n;i++){
cin >> a[i].first;
}
sort(a + 1,a + n + 1);
for(int i = n;i >= 1;i--){
if(b[a[i].second] < k){
b[a[i].second] += a[i].first;
if(b[a[i].second] >= k){
anss++;
}
ans++;
c[a[i].second]++;
if(maxn < c[a[i].second]){
maxn = c[a[i].second],maxk = ti[a[i].second];
}else if(maxn == c[a[i].second]){
maxk = min(ti[a[i].second],maxk);
}
}
}if(anss != m || maxn * 2 - 1 > n || maxn > n - maxk){
cout<<"-1";
}else{
cout << max(maxn * 2 - 1,ans);
}
return 0;
}
这里空空如也
有帮助,赞一个