Pagini recente » Cod sursa (job #2968832) | Cod sursa (job #2937550) | Cod sursa (job #187192) | Cod sursa (job #1523833) | Cod sursa (job #3238876)
#include <fstream>
using namespace std;
ifstream fin("br.in");
ofstream fout("br.out");
int sp[30000 + 12], v[15000 + 12];
int main()
{
int n, i, t, j, k, suma;
fin >> n >> t;
for ( i = 1; i <= n; ++i )
fin >> v[i], sp[i] = sp[i - 1] + v[i];
for ( i = n + 1; i < 2 * n; ++i )
sp[i] = sp[i - 1] + v[i % n];
sp[2 * n] = sp[2 * n - 1 ] + v[n];
for ( i = 1; i <= t; ++i )
{
fin >> k >> suma;
int st = k, dr = k + n - 1, mij, sol = 0;
while ( st <= dr )
{
mij = ( st + dr ) / 2;
if ( sp[mij] - sp[k - 1] <= suma )
{
sol = mij - k + 1;
st = mij + 1;
}
else
dr = mij - 1;
}
fout << sol << '\n';
}
return 0;
}