Pagini recente » Cod sursa (job #2835970) | Cod sursa (job #1729428) | Cod sursa (job #1787045) | Cod sursa (job #2665076) | Cod sursa (job #2184329)
#include <fstream>
#define NM 250003
using namespace std;
ifstream f("cuburi2.in");
ofstream g("cuburi2.out");
long long n,m,i,j,x,y,min1,sum,poz,st,dr,mijl,p;
long long s[NM],d[NM],a[NM],S[NM],D[NM];
int cautbin(int x, int y){
st=x; dr=y;
while(st<=dr){
mijl=(st+dr)/2;
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;
}