Pagini recente » Cod sursa (job #100899) | Cod sursa (job #1475586) | Cod sursa (job #1759115) | Cod sursa (job #717146) | Cod sursa (job #270307)
Cod sursa(job #270307)
# include <stdio.h>
# define N 250002
long long a[N],A[N],b[N],B[N],ct;
int i,v[N],n,m,x,y,nr;
int BS(int st, int dr)
{ int i=st,j=dr,m,P=0;
while (i<=j) {
m=(i+j)/2;
if (A[m-1]-A[x-1]<B[m]-B[y+1]){
i=m+1; P=m;
}
else j=m-1;
}
return P;
}
int main(){
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>=1;--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);
nr=BS(x,y);
ct=A[nr-1]-A[x-1]-a[x-1]*(nr-x)+B[nr+1]-B[y+1]-b[y+1]*(y-nr);
printf("%d %lld", nr, ct);
}
return 0;
}