Cod sursa(job #2212351)

Utilizator Paul_BalanPavel Balan Paul_Balan Data 13 iunie 2018 21:06:13
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("br.in");
ofstream out("br.out");

int n,t,a[15100],b[10100],p,k;

int cb(int st, int dr){
    int poz = 0;
    while(st<=dr){
        int mid = (st+dr)/2;
        int sum = b[mid] - b[k-1];
        if(sum>p) dr = mid - 1;
        else st = mid + 1, poz = mid;
    }
    if(poz) return poz-k+1;
    else return 0;

}

int main()
{
    in >> n >> t;
    for(int i=1; i<=n; i++){
        in >> a[i];
        b[i] = b[i-1] + a[i];
    }
    for(int i=1; i<=n; i++){
        b[n+i] = b[n] + b[i];
    }

    for(int i=1; i<=t; i++){
        in >> k >> p;
        out << cb(k,n+k-1) << "\n";
    }

    return 0;
}