Pagini recente » Cod sursa (job #1418622) | Cod sursa (job #665562) | Cod sursa (job #2252817) | Cod sursa (job #1402737) | Cod sursa (job #2863116)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("cuburi2.in");
ofstream fout ("cuburi2.out");
const long long DIM = 250015;
long long h[DIM], sum[DIM], lft[DIM], rgt[DIM], p, u;
long long n, q;
long long get_sum(int i, int j){
return sum[j] - sum[i-1];
}
signed main (){
ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
fin>>n>>q;
for(long long i=1; i<=n; i++){
fin>>h[i];
sum[i] = sum[i-1] + h[i];
}
for(int i=1; i<=n; i++) lft[i] = lft[i-1] + sum[i-1];
for(int i=n; i>=1; i--) rgt[i] = rgt[i+1] + sum[n] - sum[i];
long long stanga, mijloc, dreapta;
long long st, dr, sol, minn;
while(q--){
fin>>st>>dr;
stanga = st;
dreapta = dr;
while(stanga <= dreapta){
mijloc = (dreapta - stanga) / 2 + stanga;
if(get_sum(st, mijloc-1) < get_sum(mijloc, dr)){
sol = mijloc;
stanga = mijloc + 1;
}else
dreapta = mijloc - 1;
}
minn = (lft[sol] - lft[st-1] - sum[st-1]*(sol-st+1)) + (rgt[sol] - rgt[dr+1] - (sum[n]-sum[dr])*(dr-sol+1));
fout<<sol<<" "<<minn<<"\n";
}
return 0;
}
/**
**/