Pagini recente » Cod sursa (job #3306514) | Cod sursa (job #3319376) | Cod sursa (job #3311314) | Cod sursa (job #3354241) | Cod sursa (job #3329793)
#include <bits/stdc++.h>
using namespace std;
long long s1[250005], s2[250005];
int main(){
ifstream cin( "cuburi2.in" );
ofstream cout( "cuburi2.out" );
long long n, i, x, y, ans, dr, st, mid, val, k, c;
cin >> n >> k;
for( i = 1; i <= n; i++ ){
cin >> x;
s1[i] = s1[i - 1] + x;
s2[i] = s2[i - 1] + ( i * x );
}
for( i = 0; i < k; i++ ){
cin >> x >> y;
st = x;
dr = y;
val = ( s1[y] - s1[x - 1] + 1 ) / 2;
while( st <= dr ){
mid = ( st + dr ) / 2;
if( s1[mid] - s1[x - 1] < val )
st = mid + 1;
else{
ans = mid;
dr = mid - 1;
}
}
c = ans * ( s1[ans] - s1[x - 1]) - s2[ans] + s2[x - 1] - ans * (s1[y]- s1[ans]) + s2[y] - s2[ans];
cout << ans << " " << c << "\n";
}
return 0;
}