题目

谁有更快的算法吗,我这个算法超时了,(没有错误,全是超时)难道真的有更快的算法吗,我想不出来,有人解答一下吗?
我的算法
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[100001];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
sort(a+1,a+n+1);
for(int i=1;i<=m;i++){
long long l,x,sum;
scanf("%lld%lld",&l,&x);
int r=l;
sum=a[l];
bool flag=false;
while(sum<=x&&r<=n){
r++;
sum+=a[r];
flag=true;
}
if(flag){
printf("%d\n",r-1);
}
else{
printf("-1\n");
}
}
return 0;
}