Pagini recente » Cod sursa (job #674477) | Cod sursa (job #1233602) | Cod sursa (job #192176) | Cod sursa (job #716942) | Cod sursa (job #270390)
Cod sursa(job #270390)
# include <stdio.h>
# define N 250002
long long a[N],A[N],b[N],B[N],st,dr;
int v[N],n,m,x,y,P;
void BS(int i, int j)
{ int m;
while (i<=j) {
m=(i+j)>>1;
if (A[m-1]-A[x-1]<B[m]-B[y+1]){
i=m+1; P=m;
}
else j=m-1;
}
}
int main(){
int i;
freopen("cuburi2.in", "r", stdin);
freopen("cuburi2.out", "w", stdout);
scanf("%d %d",&n,&m);
for (i=1;i<=n;++i){
scanf("%d ",&v[i]);
a[i]=a[i-1]+v[i];
A[i]=A[i-1]+a[i-1];
}
for (i=n;i>0;--i){
b[i]=b[i+1]+v[i];
B[i]=B[i+1]+b[i+1];
}
for (i=1;i<=m;++i){
scanf("%d %d",&x,&y);
P=x; BS(x,y);
st=A[P]-A[x-1]-a[x-1]*(P-x+1);
dr=B[P]-B[y+1]-b[y+1]*(y-P+1);
printf("%d %lld\n",P,st+dr);
}
return 0;
}