Pagini recente » Cod sursa (job #1525164) | Cod sursa (job #2315163) | Cod sursa (job #285195) | Cod sursa (job #1267506) | Cod sursa (job #1201072)
#include<cstdio>
#define Nmax 250002
#define ll long long
using namespace std;
int n,m,p,x,y,i,step,a[Nmax];
ll nr,ss[Nmax],sd[Nmax],ts[Nmax],td[Nmax];
int main()
{ freopen("cuburi2.in","r",stdin); freopen("cuburi2.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i) {scanf("%d",&a[i]); ss[i]=ss[i-1]+a[i]; ts[i]=ts[i-1]+ss[i];}
for(i=n;i;--i) {sd[i]=sd[i+1]+a[i]; td[i]=td[i+1]+sd[i];}
while(m--)
{ scanf("%d%d",&x,&y);
for(step=1;step<y-x;step<<=1);
for(p=x;step;step>>=1)
if(p+step<=y&&ss[p+step-1]-ss[x-1]<sd[p+step]-sd[y+1]) p+=step;
nr=ts[p-1]-ts[x-1]-ss[x-1]*(p-x)+td[p+1]-td[y+1]-sd[y+1]*(y-p);
printf("%d %lld\n",p,nr);
}
return 0;
}