Pagini recente » Cod sursa (job #29716) | Cod sursa (job #43457) | Cod sursa (job #1966362) | Cod sursa (job #3131529) | Cod sursa (job #254991)
Cod sursa(job #254991)
#include <stdio.h>
#include <values.h>
#define DMax 250009
long v[DMax],n,m,j,i,a,b,mij,rez,front,back;
long long s[DMax],contor;
int main()
{
freopen("cuburi2.in","r",stdin);
freopen("cuburi2.out","w",stdout);
scanf("%ld %ld\n",&n,&m);
for(i=1;i<=n;i++)scanf("%ld",&v[i]);
for(i=1;i<=n;i++)
s[i]=s[i-1]+v[i];
for(j=1;j<=m;j++)
{
contor=0;
scanf("%ld %ld\n",&a,&b);
front=a;
back=b;
rez=a;
while(front<=back)
{
mij=(front+back)/2;
if(s[mij-1]-s[a-1] < s[b]-s[mij-1])
{
rez=mij;
front=mij+1;
}
else back=mij-1;
}
for(i=rez-1;i>=a;i--)
contor=contor+ v[rez-i]*i;
for(i=rez+1;i<=b;i++)
contor=contor+ v[i]*(i-rez);
printf("%ld %lld\n",rez,contor);
}
return 0;
}