Cod sursa(job #2783217)

Utilizator damiantudorDamian Tudor Christian damiantudor Data 13 octombrie 2021 23:31:03
Problema Cuburi2 Scor 32
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;

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

long long n,m,x,y,p,cost;
int ss[250001],sd[250001],v[250001],sp1[250001],sp2[250001];
int st,dr,mij,i;

int main()
{
    in>>n>>m;
    for(i=1;i<=n;i++)
    {
        in>>v[i];
        sd[i]=sd[i-1]+v[i];
    }
    for(i=n;i>=1;i--)
    {
        ss[i]=ss[i+1]+v[i];
    }
    for(i=1;i<=n;i++)
    {
        sp1[i]=sp1[i-1]+sd[i-1];
    }
    for(i=n;i>=1;i--)
    {
        sp2[i]=sp2[i+1]+ss[i+1];
    }
    for(i=1;i<=m;i++)
    {
        in>>x>>y;
        st=x;
        dr=y;
        p=x;
        while(st<=dr)
        {
            mij=(st+dr)/2;
            if(sd[mij-1]-sd[x-1]<sd[y]-sd[mij-1])
            {
                st=mij+1;
                p=mij;
            }
            else
                dr=mij-1;
        }
        cost = sp1[p] - sp1[x] - sd[x - 1] * (p - x);
        cost = cost + sp2[p] - sp2[y] - ss[y + 1] * (y - p);
        out<<p<<' '<<cost<<'\n';
    }
    return 0;
}