Pagini recente » Cod sursa (job #2310741) | Cod sursa (job #2331393) | Cod sursa (job #1038422) | Cod sursa (job #820816) | Cod sursa (job #1416288)
#include <stdio.h>
#define MAXN 250000
long long a[MAXN+1], b[MAXN+1];
inline long long suma(int x, int p, int y){
return b[y]-b[p]-p*(a[y]-a[p])+(p-x+1)*(a[p-1]-a[x-1])-(b[p-1]-b[x-1]-(x-1)*(a[p-1]-a[x-1]));
}
int main(){
int n, q, i, x, y, v, p, pas;
FILE *fin, *fout;
fin=fopen("cuburi2.in", "r");
fout=fopen("cuburi2.out", "w");
fscanf(fin, "%d%d", &n, &q);
for(i=1; i<=n; i++){
fscanf(fin, "%d", &v);
a[i]=a[i-1]+v;
b[i]=b[i-1]+i*(long long)v;
}
for(i=0; i<q; i++){
fscanf(fin, "%d%d", &x, &y);
p=x;
for(pas=1<<17; pas!=0; pas>>=1){
if((p+pas<=y)&&(suma(x, p+pas-1, y)>suma(x, p+pas, y))){
p+=pas;
}
}
fprintf(fout, "%d %lld\n", p, suma(x, p, y));
}
fclose(fin);
fclose(fout);
return 0;
}