Cod sursa(job #2184339)

Utilizator ivddabDabelea Ioana-Viviana ivddab Data 23 martie 2018 22:55:00
Problema Cuburi2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#define NM 250003
using namespace std;
ifstream f("cuburi2.in");
ofstream g("cuburi2.out");
int n,m,i,j,x,y,min1,poz,st,dr,mijl,p;
long long sum;
long long  s[NM],d[NM],S[NM],D[NM];
int a[NM];
int cautbin(int x, int y){
   st=x; dr=y;
   while(st<=dr){
      mijl=(st+dr)>>1;
      if(s[mijl-1]-s[x-1]<s[y]-s[mijl-1]){
        poz=mijl;
        st=mijl+1;
      } else dr=mijl-1;
   }
   return poz;
}
int main()
{
    f>>n>>m;
    for(i=1;i<=n;i++) { f>>a[i]; s[i]=s[i-1]+a[i]; S[i]=S[i-1]+s[i-1]; }
    for(i=n;i>=1;i--) { d[i]=d[i+1]+a[i]; D[i]=D[i+1]+d[i+1]; }
    for(i=1;i<=m;i++){
        f>>x>>y;
        p=cautbin(x,y);
        sum=(S[p]-S[x-1]-s[x-1]*(p-x+1));
        sum+=(D[p]-D[y+1]-d[y+1]*(y-p+1));
        g<<p<<' '<<sum<<'\n';
        sum=0;
    }
    return 0;
}