Cod sursa(job #1558919)

Utilizator Andrei143Andrei Andrei Andrei143 Data 29 decembrie 2015 19:44:57
Problema Cuburi2 Scor 33
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
using namespace std;
int v[250002],n;
long long s1[250002],s2[250002];
long long val(int p,int i,int j)
{
    long long st,dr;
    st=s1[p-1]-s1[i-1]-(p-i)*v[i-1];
    dr=s2[p+1]-s2[j+1]-(j-p)*(v[n]-v[j]);
    return st+dr;
}
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];}
    for (int i=1;i<=n;i++)
        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;
        for (int d=(w-q+1)/2;d>0;d/=2)
        while ((poz+d<=w)&&(v[poz+d-1]-v[q-1]<v[w]-v[poz+d-1]))
            poz+=d;
        while (poz>q&&v[poz-2]-v[q-1]>=v[w]-v[poz-2]) poz--;
        g<<poz<<" "<<val(poz,q,w)<<'\n';
    }
    return 0;
}