Pagini recente » Cod sursa (job #1412949) | Cod sursa (job #1620947) | Cod sursa (job #1723762) | Cod sursa (job #1863995) | Cod sursa (job #465585)
Cod sursa(job #465585)
#include<stdio.h>
#define ll long long
ll s[300005];
ll p[300005];
int v[300005],n,m;
ll calc(int i,int j,int k)
{
return (p[j]+p[i-1]-2*p[k]+k*(2*s[k]-s[i-1]-s[j]));
}
int main ()
{
int i,mij,st,dr,c1,c2,sol;
freopen("cuburi2.in","r",stdin);
freopen("cuburi2.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
for(i=1;i<=n;i++)
{
s[i]=s[i-1]+v[i];
p[i]=p[i-1]+(ll)v[i]*i;
}
for(i=1;i<=m;i++)
{
scanf("%d%d",&c1,&c2);
st=c1;
dr=c2;sol=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(calc(c1,c2,mij)<=calc(c1,c2,mij+1))
{
sol=mij;
dr=mij-1;
}
else
st=mij+1;
}
printf("%d %lld\n",sol,calc(c1,c2,sol));
}
return 0;
}