Cod sursa(job #2081842)

Utilizator Seba951Sebastian Boerescu Seba951 Data 5 decembrie 2017 11:12:51
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>

using namespace std;

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

const int L=14, N=15001;
int v[2*N], sum[2*N];

int caut(int n, int k, int s, int sum[])
{
    int pas, r;
    pas=1<<L;
    r=0;
    while(pas!=0)
    {
        if(r+pas<=2*n && sum[r+pas]<=s+sum[k-1]) r+=pas;
        pas/=2;
    }
    r = r - k + 1;
    if (r > n)
    {
        r = n;
    }
    return r;
}

int main()
{
    int n, t, i, k, s;
    in>>n>>t;
    for(i=1; i<=n; i++)
    {
        in>>v[i];
        v[i+n]=v[i];
        sum[i]=sum[i-1]+v[i];
    }
    for(i=1; i<=n; i++) sum[i+n]=sum[i+n-1]+v[i+n];
    for(i=1; i<=t; i++)
    {
        in>>k>>s;
        out<<caut(n, k, s, sum)<<'\n';
    }
    return 0;
}