Cod sursa(job #2080722)

Utilizator dianamariaDiana Cataros dianamaria Data 3 decembrie 2017 14:30:36
Problema Cuburi2 Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#define dim 250002
using namespace std;
ifstream in ("cuburi2.in");
ofstream out ("cuburi2.out");
int v[dim];
long long s[dim];
int x,y;

long long verif(int ind)
{
    long long st,dr;
    st=(v[ind-1]-v[x-1])*ind-(s[ind-1]-s[x-1]);
    dr=(s[y]-s[ind])-(v[y]-v[ind])*ind;
    return st+dr;
}
int main()
{
    int n,q,i,r,pas,start;
    long long a;
    in>>n>>q;
    for (i=1;i<=n;i++)
    {
        in>>a;
        v[i]=a+v[i-1];
        s[i]=s[i-1]+i*a;
    }
    v[n+1]=v[n];
    s[n+1]=s[n];
    for (start=1;(start<<1)<=n;start<<=1) {
    }
    for (i=1;i<=q;i++)
    {
        in>>x>>y;
        r=x;
        pas=start;
        while (pas)
        {
            if (r+pas<=y && verif(r+pas)>=verif(r+pas+1))
                r+=pas;
            pas/=2;
        }
        if (r+1<=y && verif(r)>=verif(r+1))
            r++;
        out<<r<<" "<<verif(r)<<'\n';
    }
    return 0;
}