Cod sursa(job #1558966)

Utilizator Andrei143Andrei Andrei Andrei143 Data 29 decembrie 2015 20:44:55
Problema Cuburi2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
using namespace std;
long long v[250002],n;
long long s1[250002],s2[250002];

int main()
{
    ifstream f("cuburi2.in");
    ofstream g("cuburi2.out");
    int m,q,w;
    f>>n>>m;
    for (int i=1;i<=n;i++)
    {f>>v[i];
    v[i]+=v[i-1];
    s1[i]=v[i]+s1[i-1];}
    for (int i=n;i>0;i--)
        s2[i]=s2[i+1]+v[n]-v[i-1];
    while (m--)
    {
        int q,w;
        f>>q>>w;
        int poz=q,d;
        for (d=1;d<=w-q+1;d<<=1);
        for (;d;d>>=1)
        if ((poz+d<=w)&&(v[poz+d-1]-v[q-1]<v[w]-v[poz+d-1]))
            poz+=d;
        long long st,dr;
        st=s1[poz-1]-s1[q-1]-(poz-q)*v[q-1];
        dr=s2[poz+1]-s2[w+1]-(w-poz)*(v[n]-v[w]);
        g<<poz<<" "<<st+dr<<'\n';
    }
    return 0;
}