Cod sursa(job #2156259)

Utilizator SchnitzelMannPavaloiu Gabriel SchnitzelMann Data 8 martie 2018 16:38:53
Problema Cuburi2 Scor 32
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
#define N 250005
using namespace std;
ifstream in("cuburi2.in");
ofstream out("cuburi2.out");
int arr[N];
int X1[N],X2[N];
int Y1[N],Y2[N];
int p,x,y;
void src(int a,int b)
{
    int m=(a+b)/2;
    if(X2[m-1]-X2[x-1]<X2[y]-X2[m-1])
    {
        p=m;
        if(m<b)
            return src(m+1,b);
    }
    if(a<m)
        return src(a,m-1);
}
int main()
{
    int n,k,i;
    in>>n>>k;
    for(i=1;i<=n;i++)
    {
        in>>arr[i];
        X2[i]=X2[i-1]+arr[i];
        X1[i]=X1[i-1]+X2[i-1];
    }
    for(i=n;i>0;i--)
    {
        Y2[i]=Y2[i+1]+arr[i];
        Y1[i]=Y1[i+1]+Y2[i+1];
    }
    while(k--)
    {
        in>>x>>y;
        p=x;
        src(x,y);
        out<<p<<" "<<X1[p]-X1[x-1]-X2[x-1]*(p-x+1)+Y1[p]-Y1[y+1]-Y2[y+1]*(y-p+1)<<"\n";
    }
    return 0;
}