Pagini recente » Cod sursa (job #934260) | Cod sursa (job #2329441) | Cod sursa (job #3189861) | Cod sursa (job #3247215) | Cod sursa (job #2920864)
#include <fstream>
using namespace std;
ifstream cin ("br.in");
ofstream cout ("br.out");
int v[30001],n,T,k,x;
long long S[30001];
int cb (int St, int Dr, int x)
{
int st=St,dr=Dr;
while (st<=dr){
int mij=(st+dr)/2;
if (S[mij]-S[St-1]<=x) st=mij+1;
else dr=mij-1;
}
return dr;
}
int main()
{
cin>>n>>T;
for (int i=1; i<=n; ++i) {
cin>>v[i];
v[n+i]=v[i];
}
for (int i=1; i<=2*n; ++i) S[i]=S[i-1]+v[i];
for (; T>0; --T)
{
cin>>k>>x;
if (x>=S[n]) cout<<n<<"\n";
else if (x<v[k]) cout<<0<<"\n";
else cout<<cb(k,2*n,x)-k+1<<"\n";
}
return 0;
}