Cod sursa(job #2783214)

Utilizator damiantudorDamian Tudor Christian damiantudor Data 13 octombrie 2021 23:24:01
Problema Cuburi2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 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)+sp2[p]-sp2[y]-ss[y+1]*(y-p);
        out<<p<<' '<<cost;
    }
    return 0;
}