Pagini recente » Cod sursa (job #2621204) | Cod sursa (job #2432193) | Cod sursa (job #2306911) | Cod sursa (job #33556) | Cod sursa (job #2083701)
#include <fstream>
#define dim 250005
using namespace std;
ifstream in ("cuburi2.in");
ofstream out ("cuburi2.out");
int v[dim];
long long s[dim];
int x,y;
long long verif(int ind)
{
long long st,dr;
st=(v[ind-1]-v[x-1])*ind-(s[ind-1]-s[x-1]);
dr=(s[y]-s[ind])-(v[y]-v[ind])*ind;
return st+dr;
}
int main()
{
int n,q,i,r,pas,start;
long long a;
in>>n>>q;
for (i=1;i<=n;i++)
{
in>>a;
v[i]=a+v[i-1];
s[i]=s[i-1]+i*a;
}
v[n+1]=v[n];
s[n+1]=s[n];
for (i=1;i<=q;i++)
{
in>>x>>y;
r=x;
for (start=1;(start<<1)<=y-x+1;start<<=1) {
}
pas=start;
while (pas)
{
if (r+pas+1<=y && verif(r+pas)>verif(r+pas+1))
r+=pas;
pas>>=1;
}
if (r+1<=y && verif(r)>verif(r+1))
r++;
out<<r<<" "<<verif(r)<<'\n';
}
return 0;
}