额……
  • 板块灌水区
  • 楼主Hopps_QS
  • 当前回复3
  • 已保存回复3
  • 发布时间2025/2/4 10:32
  • 上次更新2025/2/4 16:04:21
查看原帖
额……
1488985
Hopps_QS楼主2025/2/4 10:32
#include<cstdio>
using namespace std;
long long a[100002];
int clac(const int n, const int L, const long long x){
    int l = L - 1, r = n;
    while(l + 1 < r){
        const int m = (l + r) / 2;
        if(a[m] - a[L - 1] <= x)
            l = m;
        else
            r = m;
    }
    return l;
}
int main(){
    int n, m;
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; i++)
        scanf("%lld", &a[i]), a[i] += a[i - 1];
    while(m--){
        int l, x;
        scanf("%d%lld",&l, &x);
        const int ans = clac(n, l, x);
        if(ans < l)
            puts("-1");
        else
            printf("%d\n", ans);
    }
    return 0;
}
2025/2/4 10:32
加载中...