Pagini recente » Cod sursa (job #661990) | Cod sursa (job #2641548) | Cod sursa (job #339880) | Cod sursa (job #2914320) | Cod sursa (job #266754)
Cod sursa(job #266754)
#include <stdio.h>
#define DIM 250005
#define ll long long
int a[DIM];
int n,m,s;
ll s1[DIM],s2[DIM],si1[DIM],si2[DIM];
ll sol;
void read ()
{
int i;
scanf ("%d%d",&n,&m);
for (i=1; i<=n; ++i)
scanf ("%d",&a[i]);
}
void proc ()
{
int i,j;
for (i=1, j=n; i<=n, j; ++i, --j)
{
s1[i]=s1[i-1]+a[i];
si1[i]=si1[i-1]+s1[i];
s2[j]=s2[j+1]+a[j];
si2[j]=si2[j+1]+s2[j];
}
}
void solve ()
{
int i,x,y,st,dr,mij;
for (i=1; i<=m; ++i)
{
scanf ("%d%d",&x,&y);
st=x;
dr=y;
while (st<=dr)
{
mij=(st+dr)/2;
if (s1[mij-1]-s1[x-1]<s2[mij]-s2[y+1])
{
s=mij;
st=mij+1;
}
else
dr=mij-1;
}
sol=si1[s-1]-si1[x-1]-s1[x-1]*(s-x)+si2[s+1]-si2[y+1]-s2[y+1]*(y-s);
printf ("%d %lld\n",s,sol);
}
}
int main ()
{
freopen ("cuburi2.in","r",stdin);
freopen ("cuburi2.out","w",stdout);
read ();
proc ();
solve ();
return 0;
}