Cod sursa(job #2517842)

Utilizator Simon2712Simon Slanina Simon2712 Data 4 ianuarie 2020 12:52:20
Problema Cuburi2 Scor 32
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>

using namespace std;
ifstream cin("cuburi2.in");
ofstream cout("cuburi2.out");
#define N 250001
int v2[N],st[N],dr[N],sst[N],sdr[N];
int main()
{
    int n,m,mm,i,s=0,mini,a,x,y,rez,xx,yy;
    cin>>n>>mm;
    for(i=1;i<=n;i++)
    {
      cin>>v2[i];
      a=v2[i];
      //v[i]=v[i-1]+s;
      st[i]=st[i-1]+s;
      s+=a;
      sst[i]=s;
    }
    s=0;
    for(i=n;i>0;i--)
    {
      dr[i]=dr[i+1]+s;
      //v[i]+=dr[i];
      s+=v2[i];
      sdr[i]=s;
    }
    st[n+1]=st[n];
    for(i=1;i<=mm;i++)
    {
      cin>>x>>y;
      xx=x;
      yy=y;
      mini=-1;
      while(x<=y)
      {
        m=(x+y)/2;
        if(sst[m-1]-sst[xx-1]<=sst[yy]-sst[m-1])
        {
          x=m+1;
          rez=m;
        }
        else
          y=m-1;
      }
      cout<<rez<<" "<<(long long)st[rez]-st[xx]-sst[xx-1]*(rez-xx)+dr[rez]-dr[yy]-sdr[yy+1]*(yy-rez)<<'\n';
    }
    return 0;
}