Cod sursa(job #1666274)

Utilizator sebastiannrxRichiteanu Mihai Sebastian sebastiannrx Data 27 martie 2016 20:47:54
Problema Cuburi2 Scor 32
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
using namespace std;
ifstream f("cuburi2.in");
ofstream g("cuburi2.out");
int n,k,i,j,p,x,y,u,mij,sol,s,v[250001],dr[250001],st[250001];
int main()
{   f>>n>>k;
    f>>v[1];
    st[1]=v[1];
    for (i=2;i<=n;++i) {
        f>>v[i];
        v[i]+=v[i-1];
        st[i]=v[i]+st[i-1];}

    for (i=n;i>=1;--i)
        dr[i]=v[n]-v[i-1]+dr[i+1];
    for (i=1;i<=k;++i) {
        f>>x>>y;
        p=x;
        u=y;
        while (p<=u) {
            mij=(p+u)/2;
            if (v[mij]-v[x-1]>v[y]-v[mij]) {
                sol=mij;
                u=mij-1;}
            else
                p=mij+1;}
        s=st[sol-1]-st[x-1]-v[x-1]*(sol-x);
        s+=dr[sol+1]-dr[y+1]-(v[n]-v[y])*(y-sol);
        g<<sol<<" "<<s<<'\n';


    }


    return 0;
}