#include<bits/stdc++.h>
using namespace std;
int m,n,k,ans;
int z[100005];
struct t{
int a,b,id;
}c[100005];
bool cmp(t x,t y){
return x.b>y.b;
}
bool check(){
for(int i=1;i<=m;i++){
if(z[i]<k){
return 1;
}
}
return 0;
}
int main(){
cin>>m>>n>>k;
for(int i=0;i<n;i++){
cin>>c[i].a;
c[i].id=i;
}
for(int i=0;i<n;i++){
cin>>c[i].b;
}
sort(c,c+n,cmp);
for(int i=0;i<n && check();i++){
if(z[c[i].a]>=k){
continue;
}else{
z[c[i].a]+=c[i].b;
ans++;
}
}
if(check()){
cout<<-1;
return 0;
}
cout<<ans;
return 0;
}
样例二没过
A了
数据过于超雄