Cod sursa(job #2470521)

Utilizator CleliaClelia Maria Dobrescu Clelia Data 9 octombrie 2019 13:00:17
Problema Cuburi2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
using namespace std;
ifstream fin ("cuburi2.in");
ofstream fout ("cuburi2.out");
struct ura
{
    int nr;
    unsigned long long s1,s2,x1,x2;
};
ura v[250001];
int main()
{
    int n,m,i,a,b,l1,l2,mij,poz;
    unsigned long long s1,s2,s,mini;
    fin>>n>>m;
    for (i=1;i<=n;i++)
    {
        fin>>v[i].nr;
        v[i].s1=v[i-1].s1+v[i].nr;
        v[i].x1=v[i-1].x1+v[i].s1;
    }
    for (i=n;i>=1;i--)
    {
        v[i].s2=v[i+1].s2+v[i].nr;
        v[i].x2=v[i+1].x2+v[i].s2;
    }
    for (i=1;i<=m;i++)
    {
        fin>>a>>b;
        mini=v[n].x1+v[1].x2;
        l1=a;
        l2=b;
        while (l1<=l2)
        {
            mij=(l1+l2)/2;
            if (mij!=a)
                s1=v[mij-1].x1-v[a-1].x1-v[a-1].s1;
            else
                s1=0;
            if (mij!=b)
                s2=v[mij+1].x2-v[b+1].x2-v[b+1].s2;
            else
                s2=0;
            s=s1+s2;
            if (s<mini)
            {
                mini=s;
                poz=mij;
            }
            if (s1<s2)
                l1=mij+1;
            else
                if (s1>s2)
                    l2=mij-1;
                else
                    l1=l2+1;
        }
        fout<<poz<<" "<<mini<<'\n';
    }
    return 0;
}