一只刷题的北京烤鸭 2024-09-02 09:56 采纳率: 50%
浏览 10

算法超时,有更快的算法吗?

题目

img


谁有更快的算法吗,我这个算法超时了,(没有错误,全是超时)难道真的有更快的算法吗,我想不出来,有人解答一下吗?
我的算法

#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;
}
  • 写回答

2条回答 默认 最新

  • AitTech 2024-09-02 10:00
    关注

    你第十行已把数据排序了,却还是线性搜索,改为使用二分查找会更快

    评论

报告相同问题?

问题事件

  • 创建了问题 9月2日