Pagini recente » Cod sursa (job #3342624) | Cod sursa (job #3355917) | Cod sursa (job #3355927) | Cod sursa (job #3305703) | Cod sursa (job #3328726)
#include <fstream>
using namespace std;
ifstream fin ("cuburi2.in");
ofstream fout ("cuburi2.out");
long long s1[250005], s2[250005];
int v[250005];
int t_search (long long x, int l, int r) {
int le = l, ri = r;
int ret = 0;
while (le <= ri) {
int mid = (le + ri) / 2;
if (s1[mid] - s1[l-1] >= x) {
ret = mid;
ri = mid-1;
}
else {
le = mid + 1;
}
}
return ret;
}
int main () {
int n,m,r,l,i;
fin>>n>>m;
for (i = 1; i <= n; i++) {
fin>> v[i];
s1[i] = v[i] + s1[i-1];
s2[i] = v[i]*i + s2[i-1];
}
for (i = 1; i <= m; i++) {
fin>>l>>r;
long long x = (s1[r]-s1[l-1]+1)/2 ;
int nr = t_search(x,l,r);
long long cost = nr * (s1[nr] - s1[l-1]) - (s2[nr] - s2[l-1]) + (s2[r] - s2[nr]) - nr * (s1[r]- s1[nr]);
fout<<nr<<" "<<cost<<"\n";
}
}