Pagini recente » Cod sursa (job #2122416) | Cod sursa (job #1908225) | Cod sursa (job #48276) | Cod sursa (job #2805135) | Cod sursa (job #1267063)
#include <stdio.h>
#define MAX 250000
long long d[3][MAX];
int main(){
FILE *fin,*fout;
fin=fopen("cuburi2.in","r");
fout=fopen("cuburi2.out","w");
int n,m;
fscanf(fin,"%d%d",&n,&m);
int i;
for(i=1;i<=n;i++){
int x;
fscanf(fin,"%d",&x);
d[0][i]=d[0][i-1]+x;
d[1][i]=d[1][i-1]+d[0][i-1];
}
for(i=n;i>=1;i--)
d[2][i]=d[2][i+1]+d[0][n]-d[0][i];
for(i=1;i<=m;i++){
int a,b;
fscanf(fin,"%d%d",&a,&b);
int pow=1;
while(pow<b-a)
pow*=2;
int ans=a;
while(pow){
if(ans+pow<=b&&d[0][ans+pow-1]-d[0][a-1]<d[0][b]-d[0][ans+pow-1])
ans+=pow;
pow/=2;
}
fprintf(fout,"%d %lld\n",ans,d[1][ans]-d[1][a]-d[0][a-1]*(ans-a)+d[2][ans]-d[2][b]-(b-ans)*(d[0][n]-d[0][b]));
}
return 0;
}