求正确性问题出在哪里
#include<bits/stdc++.h>
using namespace std;
struct Node{
int w,bj;
}a[100001];
bool cmp(Node x1,Node x2){
if(x1.w==x2.w){
return x1.bj<x2.bj;
}
else{
return x1.w<x2.w;
}
}
int main(){
int n,k;
long long m;
scanf("%d%d%lld",&n,&k,&m);
for(int i=1;i<=n;i++){
scanf("%d%d",&a[i].w,&a[n+i].w);
a[n+i].bj=1;
}
int ans=0;
sort(a+1,a+2*n+1,cmp);
int i=1;
while(m-a[i].w>0&&i<=2*n){
if(k-a[i].bj>=0){
m-=a[i].w;
ans++;
k-=a[i].bj;
}
i++;
}
cout<<ans;
return 0;
}