Cod sursa(job #961764)

Utilizator misinoonisim necula misino Data 12 iunie 2013 20:14:57
Problema Cuburi2 Scor 32
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
#define N  251000
using namespace std;
ifstream f("cuburi2.in");
ofstream g("cuburi2.out");
int i,n,m,x,y,p,a[N],dr[N],st[N],d[N],s[N];
inline int bsearch(int li,int ls)
{
    int mij,sol=li;
    while(li<=ls)
    {
        mij=(li+ls)>>1;
        if(st[mij-1]-st[x-1]<=st[y]-st[mij-1])
        {
            li=mij+1;
            sol=mij;
        }
        else
        ls=mij-1;
    }
    return sol;
}
int main()
{
    f>>n>>m;
    for(i=1;i<=n;++i)
    {
        f>>a[i];
        st[i]=st[i-1]+a[i];
        s[i]=s[i-1]+st[i-1];
    }
    for(i=n;i;--i)
    {
        dr[i]=dr[i+1]+a[i];
        d[i]=d[i+1]+dr[i+1];
    }
    for(i=1;i<=m;++i)
    {
        f>>x>>y;
        p=bsearch(x,y);
        g<<p<<' '<<s[p]-s[x-1]-st[x-1]*(p-x+1)+d[p]-d[y+1]-dr[y+1]*(y-p+1)<<'\n';
    }
    return 0;
}