Cod sursa(job #2471885)

Utilizator ana_valeriaAna Valeria Duguleanu ana_valeria Data 11 octombrie 2019 17:45:49
Problema Cuburi2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
using namespace std;
ifstream cin ("cuburi2.in");
ofstream cout ("cuburi2.out");
long long v[250010],s_st[250010],s_dr[250010],ss_st[250010],ss_dr[250010];
int main()
{
    long long n,i,m,x,y,st,dr,mijl,sumalastanga,sumaladreapta,poz;
    cin>>n>>m;
    for (i=1; i<=n; i++)
        cin>>v[i];
    for (i=1; i<=n; i++)
    {
        s_st[i]=s_st[i-1]+v[i];
        ss_st[i]=ss_st[i-1]+s_st[i-1];
    }
    for (i=n; i>=1; i--)
    {
        s_dr[i]=s_dr[i+1]+v[i];
        ss_dr[i]=ss_dr[i+1]+s_dr[i+1];
    }
    for (i=1; i<=m; i++)
    {
        cin>>x>>y;
        st=x;
        dr=y;
        while (st<=dr)
        {
            mijl=(st+dr)/2;
            if (s_st[mijl-1]-s_st[x-1]<s_st[y]-s_st[mijl-1])
            {
                st=mijl+1;
                poz=mijl;
            }
            else
                dr=mijl-1;
        }
        sumalastanga=ss_st[poz]-ss_st[x]-s_st[x-1]*(poz-x);
        sumaladreapta=ss_dr[poz]-ss_dr[y]-s_dr[y+1]*(y-poz);
        cout<<poz<<" "<<sumalastanga+sumaladreapta<<"\n";
    }
        return 0;
}