Cod sursa(job #407962)

Utilizator freak93Adrian Budau freak93 Data 2 martie 2010 19:11:55
Problema Cuburi2 Scor 4
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>

using namespace std;

const char iname[]="cuburi2.in";
const char oname[]="cuburi2.out";
const int maxn=256000;

ifstream f(iname);
ofstream g(oname);

long long a[maxn],s[maxn],sd[maxn],ss[maxn],i,j,n,m,step,x,y;

int main()
{
    f>>n>>m;
    for(i=1;i<=n;++i)
        f>>a[i],s[i]=s[i-1]+a[i],ss[i]=ss[i-1]+s[i-1];

    for(i=n;i;--i)
        sd[i]=sd[i+1]+s[n]-s[i];

    for(i=1;i<=m;++i)
    {
        f>>x>>y;
        for(step=1;step<y-x;step<<=1);
        for(j=x;step;step>>=1)
            if(j+step<=y&&s[j+step]-s[x-1]<s[y]-s[j+step])
                j+=step;
        ++j;
        g<<j<<" "<<ss[j]-ss[x]-s[x-1]*(j-x)+sd[j]-sd[y]-s[y+1]*(y-j)<<"\n";
    }

    f.close();
    g.close();

    return 0;
}